From: Luke S. <lsc...@us...> - 2004-04-21 21:06:17
|
Update of /cvsroot/gaim/gaim/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15086/src Modified Files: gtkprefs.c pluginpref.c Log Message: " fixed up an issue in the example plugin and a memory leak and some other code.." --Gary Kramlich Index: gtkprefs.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/gtkprefs.c,v retrieving revision 1.138 retrieving revision 1.139 diff -u -d -p -r1.138 -r1.139 --- gtkprefs.c 19 Apr 2004 21:12:42 -0000 1.138 +++ gtkprefs.c 21 Apr 2004 21:04:59 -0000 1.139 @@ -357,6 +357,17 @@ delete_prefs(GtkWidget *asdf, void *gdsa ui_info->iter = NULL; } } + + if(GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { + GaimPluginUiInfo *prefs_info; + + prefs_info = GAIM_PLUGIN_UI_INFO(plug); + + if(prefs_info->iter != NULL) { + g_free(prefs_info->iter); + prefs_info->iter = NULL; + } + } } } @@ -1873,15 +1884,19 @@ static void plugin_load (GtkCellRenderer g_free(ui_info->iter); ui_info->iter = NULL; } - } else if (GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { + } + + if (GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { GaimPluginUiInfo *prefs_info; prefs_info = GAIM_PLUGIN_UI_INFO(plug); - if(prefs_info != NULL && prefs_info->iter != NULL) { - gtk_tree_store_remove(GTK_TREE_STORE(prefstree), prefs_info->iter); - g_free(prefs_info->iter); - prefs_info->iter = NULL; + if(prefs_info != NULL) { + if(prefs_info->iter != NULL) { + gtk_tree_store_remove(GTK_TREE_STORE(prefstree), prefs_info->iter); + g_free(prefs_info->iter); + prefs_info->iter = NULL; + } } } @@ -2526,16 +2541,19 @@ void prefs_notebook_init() { } if(GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { - GtkWidget *pref_frame; + GtkWidget *gtk_frame; + GaimPluginPrefFrame *pp_frame; GaimPluginUiInfo *prefs_info; prefs_info = GAIM_PLUGIN_UI_INFO(plug); - pref_frame = gaim_gtk_plugin_pref_create_frame(prefs_info->get_plugin_pref_frame(plug)); + pp_frame = prefs_info->get_plugin_pref_frame(plug); + gtk_frame = gaim_gtk_plugin_pref_create_frame(pp_frame); + gaim_plugin_pref_frame_destroy(pp_frame); - if(pref_frame != NULL) { + if(GTK_IS_WIDGET(gtk_frame)) { prefs_info->iter = g_new0(GtkTreeIter, 1); prefs_notebook_add_page(_(plug->info->name), NULL, - pref_frame, prefs_info->iter, + gtk_frame, prefs_info->iter, (plug->info->type == GAIM_PLUGIN_PROTOCOL) ? &proto_iter : &plugin_iter, notebook_page++); } @@ -2988,4 +3006,3 @@ void gaim_gtk_prefs_rename_old() { gaim_prefs_rename_boolean_toggle("/gaim/gtk/sound/silent_signon", "/gaim/gtk/sound/signon"); } - Index: pluginpref.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/pluginpref.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -p -r1.1 -r1.2 --- pluginpref.c 19 Apr 2004 21:12:42 -0000 1.1 +++ pluginpref.c 21 Apr 2004 21:05:08 -0000 1.2 @@ -58,19 +58,19 @@ gaim_plugin_pref_frame_new() { void gaim_plugin_pref_frame_destroy(GaimPluginPrefFrame *frame) { GaimPluginPref *pref; - GList *l, *ll; + GList *l; g_return_if_fail(frame); - for(l = frame->prefs; l != NULL; l = ll) { - ll = l->next; - + for(l = frame->prefs; l != NULL; l = l->next) { pref = (GaimPluginPref *)l->data; gaim_plugin_pref_destroy(pref); - - g_list_free_1(l); } + g_list_free(frame->prefs); + frame->prefs = NULL; + + g_free(frame); frame = NULL; } @@ -79,11 +79,14 @@ gaim_plugin_pref_frame_add(GaimPluginPre g_return_if_fail(frame); g_return_if_fail(pref); - frame->prefs = g_list_append(frame->prefs, (gpointer)pref); + frame->prefs = g_list_append(frame->prefs, pref); } GList * gaim_plugin_pref_frame_get_prefs(GaimPluginPrefFrame *frame) { + g_return_val_if_fail(frame, NULL); + g_return_val_if_fail(frame->prefs, NULL); + return frame->prefs; } @@ -140,20 +143,19 @@ gaim_plugin_pref_destroy(GaimPluginPref g_return_if_fail(pref); - if(pref->name) + if(pref->name) { g_free(pref->name); + pref->name = NULL; + } - if(pref->label) + if(pref->label) { g_free(pref->label); + pref->label = NULL; + } - l = pref->choices; - while(l) { - ll = l->next; - - g_free(l->data); - g_list_free_1(l); - - l = l->next; + if(pref->choices) { + g_list_free(pref->choices); + pref->choices = NULL; } g_free(pref); @@ -258,16 +260,6 @@ gaim_plugin_pref_add_choice(GaimPluginPr pref->choices = g_list_append(pref->choices, choice); } -gpointer -gaim_plugin_pref_get_choice(GaimPluginPref *pref, unsigned int index) { - g_return_val_if_fail(pref, NULL); - - if(index > g_list_length(pref->choices)) - return NULL; - - return g_list_nth_data(pref->choices, index); -} - GList * gaim_plugin_pref_get_choices(GaimPluginPref *pref) { g_return_val_if_fail(pref, NULL); |