Plug a few memory leaks

This commit is contained in:
Colomban Wendling 2011-10-10 21:16:53 +02:00
parent b6eccc01ae
commit 010be558cd
4 changed files with 19 additions and 17 deletions

View File

@ -170,14 +170,13 @@ static void open_file_dialog_handle_response(GtkWidget *dialog, gint response)
static void on_file_open_notify(GObject *filechooser, GParamSpec *pspec, gpointer data)
{
GValue *value;
GValue value = { 0 };
value = g_new0(GValue, 1);
g_value_init(value, pspec->value_type);
g_object_get_property(filechooser, pspec->name, value);
g_value_init(&value, pspec->value_type);
g_object_get_property(filechooser, pspec->name, &value);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
ui_lookup_widget(GTK_WIDGET(filechooser), "check_hidden")), g_value_get_boolean(value));
ui_lookup_widget(GTK_WIDGET(filechooser), "check_hidden")), g_value_get_boolean(&value));
}

View File

@ -278,6 +278,10 @@ void document_init_doclist()
void document_finalize()
{
guint i;
for (i = 0; i < documents_array->len; i++)
g_free(documents[i]);
g_ptr_array_free(documents_array, TRUE);
}

View File

@ -194,7 +194,12 @@ static void menu_items_changed_cb(GtkContainer *container, GtkWidget *widget, Ge
priv = GEANY_MENU_BUTTON_ACTION_GET_PRIVATE(action);
if (priv->menu != NULL)
enable = (g_list_length(gtk_container_get_children(GTK_CONTAINER(priv->menu))) > 0);
{
GList *children = gtk_container_get_children(GTK_CONTAINER(priv->menu));
enable = (g_list_length(children) > 0);
g_list_free(children);
}
else
enable = FALSE;

View File

@ -540,12 +540,9 @@ void sidebar_remove_document(GeanyDocument *doc)
if (GTK_IS_WIDGET(doc->priv->tag_tree))
{
gtk_widget_destroy(doc->priv->tag_tree);
if (GTK_IS_TREE_VIEW(doc->priv->tag_tree))
{
/* Because it was ref'd in sidebar_update_tag_list, it needs unref'ing */
g_object_unref((gpointer)doc->priv->tag_tree);
}
gtk_widget_destroy(doc->priv->tag_tree); /* make GTK release its references, if any */
/* Because it was ref'd in sidebar_update_tag_list, it needs unref'ing */
g_object_unref(doc->priv->tag_tree);
doc->priv->tag_tree = NULL;
}
}
@ -1056,11 +1053,8 @@ void sidebar_finalize(void)
{
if (WIDGET(tv.default_tag_tree))
{
g_object_unref(tv.default_tag_tree);
/* This is not exactly clean, default_tag_tree's ref_count is 2 when it is shown,
* 1 oherwise. We should probably handle the ref_count more accurate. */
if (WIDGET(tv.default_tag_tree))
gtk_widget_destroy(tv.default_tag_tree);
gtk_widget_destroy(tv.default_tag_tree); /* make GTK release its references, if any... */
g_object_unref(tv.default_tag_tree); /* ...and release our own */
}
if (WIDGET(tv.popup_taglist))
gtk_widget_destroy(tv.popup_taglist);