]> code.delx.au - gnu-emacs/commitdiff
lwlib-Xm.c: Fixed memory leak for menus.
authorJan Djärv <jan.h.d@swipnet.se>
Sun, 26 Jan 2003 13:06:48 +0000 (13:06 +0000)
committerJan Djärv <jan.h.d@swipnet.se>
Sun, 26 Jan 2003 13:06:48 +0000 (13:06 +0000)
lwlib/ChangeLog
lwlib/lwlib-Xm.c

index 6649f0960d6447f4bcc213423814ca84b57c8246..5f3ce50f8690c19fa1432c23f451c515c0a6b94a 100644 (file)
@@ -1,3 +1,8 @@
+2003-01-26  Jan D.  <jan.h.d@swipnet.se>
+
+       * lwlib-Xm.c (update_one_menu_entry): Deallocate widget_list.
+       (destroy_all_children): Call it self to destroy sub menu children.
+
 2002-12-22  Richard M. Stallman  <rms@gnu.org>
 
        * xlwmenu.c (pop_new_stack_if_no_contents): Do nothing if
index c55aa473247ab6df9d3f27adbe8ce57f6d5ce2f4..f61b72534df57134fd03f177f1e9aa3e7c5817db 100644 (file)
@@ -268,7 +268,10 @@ destroy_all_children (widget, first_child_to_destroy)
          XtSetArg (al[0], XmNsubMenuId, &submenu); 
          XtGetValues (children[i], al, 1);
          if (submenu)
-           XtDestroyWidget (submenu);
+            {
+              destroy_all_children (submenu, 0);
+              XtDestroyWidget (submenu);
+            }
          XtDestroyWidget (children[i]);
        }
 
@@ -734,6 +737,9 @@ update_one_menu_entry (instance, widget, val, deep_p)
                             (XtPointer)instance);
              XtManageChild (button);
            }
+
+          if (widget_list)
+            XtFree ((char*) widget_list);
        }
     }
   else if (!contents)
@@ -813,7 +819,7 @@ xm_update_menu (instance, widget, val, deep_p)
     {
       destroy_all_children (widget, num_children_to_keep);
       make_menu_in_widget (instance, widget, val->contents,
-                          num_children_to_keep);
+                           num_children_to_keep);
     }
 
   XtFree ((char *) children);