ide/CodeEditor: Fixes for parsing memory leaks
authorJerome St-Louis <jerome@ecere.com>
Mon, 12 Dec 2011 00:01:32 +0000 (19:01 -0500)
committerJerome St-Louis <jerome@ecere.com>
Mon, 12 Dec 2011 00:01:32 +0000 (19:01 -0500)
ide/src/designer/CodeEditor.ec
ide/src/designer/Designer.ec
ide/src/designer/Sheet.ec

index 7b71136..068de9f 100644 (file)
@@ -2447,6 +2447,8 @@ class CodeEditor : Window
       }
       FreeExcludedSymbols(this.excludedSymbols);
       FreeContext(this.globalContext);
+      FreeIncludeFiles();
+      FreeGlobalData(&this.globalData);
 
       if(GetGlobalContext() == globalContext)
       {
@@ -5315,11 +5317,14 @@ class CodeEditor : Window
 
       for(oClass = classes.first; oClass; oClass = oClass.next)
       {
-         ObjectInfo object;
+         if(oClass.instance)
+         {
+            ObjectInfo object;
 
-         sheet.AddObject(oClass, oClass.name ? oClass.name : oClass.instance._class.name, typeClass, false);
-         for(object = oClass.instances.first; object; object = object.next)
-            sheet.AddObject(object, object.name ? object.name : object.instance._class.name, typeData, false);
+            sheet.AddObject(oClass, oClass.name ? oClass.name : oClass.instance._class.name, typeClass, false);
+            for(object = oClass.instances.first; object; object = object.next)
+               sheet.AddObject(object, object.name ? object.name : object.instance._class.name, typeData, false);
+         }
       }
       sheet.SelectObject(selected);
    }
@@ -6706,10 +6711,3 @@ CodeEditor NewCodeEditor(Window parent, WindowState state, bool modified)
    document.Create();
    return document;
 }
-
-void CodeEditor_Terminate()
-{
-   FindParams_Terminate();
-   FindCtx_Terminate();
-   FreeIncludeFiles();
-}
index 6e1ba4f..c1b9092 100644 (file)
@@ -235,7 +235,7 @@ class Designer : DesignerBase
    {
       ClassDesignerBase classDesigner = this.classDesigner;
 #ifdef _DEBUG
-      if(instance._class.module.application != codeEditor.privateModule)
+      if(instance && instance._class.module.application != codeEditor.privateModule)
          printf("warning: SelectObject: instance._class.module.application != codeEditor.privateModule\n");
 #endif
       if(!classDesigner || !instance || classDesigner._class != (Class)eInstance_GetDesigner(instance))
index 7f51649..b3d0529 100644 (file)
@@ -797,7 +797,10 @@ class Sheet : Window
 
                         // Hide properties like this for now..
                         if(name && !strcmp(name, "Private")) 
+                        {
+                           delete info;
                            continue;
+                        }
 
                         if(!category)
                         {