Преглед изворни кода

HPCC-8292 Recover from errors starting esp when reading plugin symbols

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Gavin Halliday пре 12 година
родитељ
комит
bb6a5e0af4
1 измењених фајлова са 16 додато и 6 уклоњено
  1. 16 6
      common/fileview2/fvtransform.cpp

+ 16 - 6
common/fileview2/fvtransform.cpp

@@ -293,18 +293,28 @@ void ViewTransformerRegistry::addPlugins(const char * name)
     HqlParseContext parseCtx(dataServer, NULL);
     HqlLookupContext ctx(parseCtx, &errors);
     getRootScopes(scopes, dataServer, ctx);
+
     ForEachItemIn(i, scopes)
     {
         IHqlScope * scope = &scopes.item(i);
         HqlExprArray symbols;
-        scope->ensureSymbolsDefined(ctx);
-        scope->getSymbols(symbols);
+        try
+        {
+            scope->ensureSymbolsDefined(ctx);
+            scope->getSymbols(symbols);
 
-        ForEachItemIn(j, symbols)
+            ForEachItemIn(j, symbols)
+            {
+                IHqlExpression & cur = symbols.item(j);
+                if (cur.getOperator() == no_service)
+                    addServiceDefinition(&cur);
+            }
+        }
+        catch (IException * e)
         {
-            IHqlExpression & cur = symbols.item(j);
-            if (cur.getOperator() == no_service)
-                addServiceDefinition(&cur);
+            const char * name = scope->queryName()->str();
+            VStringBuffer msg("Error loading plugin %s", name);
+            EXCLOG(e, msg.str());
         }
     }
 }