# HG changeset patch # User Nathan Walp # Date 1047436048 0 # Node ID 91ef4fae4a49e0fe7637b0d9cc4a087c75ad7a96 # Parent 06e8e585812117ddb6497b94742c72f5538ad070 [gaim-migrate @ 5033] plug a leak or two, and make removing buddies not blow up. committer: Tailor Script diff -r 06e8e5858121 -r 91ef4fae4a49 src/buddy.c --- a/src/buddy.c Wed Mar 12 01:34:25 2003 +0000 +++ b/src/buddy.c Wed Mar 12 02:27:28 2003 +0000 @@ -192,8 +192,10 @@ gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val); node = g_value_get_pointer(&val); - if (!GAIM_BLIST_NODE_IS_BUDDY(node)) + if (!GAIM_BLIST_NODE_IS_BUDDY(node)) { + gtk_tree_path_free(path); return FALSE; + } menu = gtk_menu_new(); @@ -237,6 +239,7 @@ * the event propoagates down and somehow gets interpreted as the start of a drag event. */ sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv)); gtk_tree_selection_select_path(sel, path); + gtk_tree_path_free(path); return TRUE; #endif } @@ -312,8 +315,10 @@ 8, /* bits */ (void*)&node, sizeof (node)); + + gtk_tree_path_free(sourcerow); } - + } static void gaim_gtk_blist_drag_data_rcv_cb(GtkWidget *widget, GdkDragContext *dc, guint x, guint y, @@ -326,6 +331,7 @@ memcpy(&b, sd->data, sizeof(b)); if(gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget), x, y, &path, &position)) { /* if we're here, I think it means the drop is ok */ + gtk_tree_path_free(path); } } } @@ -872,6 +878,7 @@ * we expand the group node */ GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &groupiter); gtk_tree_view_expand_row(GTK_TREE_VIEW(gtkblist->treeview), path, TRUE); + gtk_tree_path_free(path); } } } diff -r 06e8e5858121 -r 91ef4fae4a49 src/list.c --- a/src/list.c Wed Mar 12 01:34:25 2003 +0000 +++ b/src/list.c Wed Mar 12 02:27:28 2003 +0000 @@ -296,13 +296,21 @@ { struct gaim_blist_ui_ops *ops = gaimbuddylist->ui_ops; - GaimBlistNode *node = (GaimBlistNode*)buddy; - + GaimBlistNode *gnode, *node = (GaimBlistNode*)buddy; + struct group *group; + + gnode = node->parent; + group = (struct group *)gnode; + + if(gnode->child == node) + gnode->child = node->next; if (node->prev) node->prev->next = node->next; if (node->next) node->next->prev = node->prev; - + + group->members = g_slist_remove(group->members, buddy); + ops->remove(gaimbuddylist, node); g_free(buddy->name); g_free(buddy->alias);