# HG changeset patch # User Jim Seymour # Date 1021429281 0 # Node ID 0970eabdd8dfccbc9e218004d09a2f5b7bee2a0a # Parent dbbdf3a55999cb850c33ed61ab73108cedfdd77a [gaim-migrate @ 3268] Eliminated memory leaks resulting from the way pop-up menus are used. committer: Tailor Script diff -r dbbdf3a55999 -r 0970eabdd8df src/buddy_chat.c --- a/src/buddy_chat.c Tue May 14 18:24:30 2002 +0000 +++ b/src/buddy_chat.c Wed May 15 02:21:21 2002 +0000 @@ -846,9 +846,16 @@ c = new_conversation(gtk_object_get_user_data(obj)); set_convo_gc(c, b->gc); } else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { - GtkWidget *menu; + static GtkWidget *menu = NULL; GtkWidget *button; + /* + * If a menu already exists, destroy it before creating a new one, + * thus freeing-up the memory it occupied. + */ + if(menu) + gtk_widget_destroy(menu); + menu = gtk_menu_new(); button = gtk_menu_item_new_with_label(_("IM")); diff -r dbbdf3a55999 -r 0970eabdd8df src/conversation.c --- a/src/conversation.c Tue May 14 18:24:30 2002 +0000 +++ b/src/conversation.c Wed May 15 02:21:21 2002 +0000 @@ -3441,7 +3441,7 @@ static gboolean icon_menu(GtkObject *obj, GdkEventButton *e, struct conversation *c) { - GtkWidget *menu; + static GtkWidget *menu = NULL; GtkWidget *button; if (e->button != 3) @@ -3449,6 +3449,13 @@ if (e->type != GDK_BUTTON_PRESS) return FALSE; + /* + * If a menu already exists, destroy it before creating a new one, + * thus freeing-up the memory it occupied. + */ + if(menu) + gtk_widget_destroy(menu); + menu = gtk_menu_new(); if (c->icon_timer) { diff -r dbbdf3a55999 -r 0970eabdd8df src/gtkimhtml.c --- a/src/gtkimhtml.c Tue May 14 18:24:30 2002 +0000 +++ b/src/gtkimhtml.c Wed May 15 02:21:21 2002 +0000 @@ -1764,9 +1764,18 @@ uw = click->data; if ((x > uw->x) && (x < uw->x + uw->width) && (y > uw->y) && (y < uw->y + uw->height)) { - GtkWidget *menu = gtk_menu_new (); + static GtkWidget *menu = NULL; GtkWidget *button; + /* + * If a menu already exists, destroy it before creating a new one, + * thus freeing-up the memory it occupied. + */ + if(menu) + gtk_widget_destroy(menu); + + menu = gtk_menu_new(); + if (uw->bit->url) { button = gtk_menu_item_new_with_label ("Open URL"); gtk_signal_connect (GTK_OBJECT (button), "activate",