Fixed some leaks

master
Yevgen Muntyan 2006-05-20 01:57:50 -05:00
parent d90711faed
commit 4b83258c0a
9 changed files with 64 additions and 46 deletions

View File

@ -330,6 +330,7 @@ moo_edit_class_new_actionv (MooEditClass *klass,
goto error;
}
moo_param_array_free ((GParameter*) action_params->data, action_params->len);
g_array_free (action_params, FALSE);
action_params = NULL;

View File

@ -2289,6 +2289,8 @@ create_statusbar (MooEditWindow *window)
window->priv->cursor_label = moo_glade_xml_get_widget (xml, "cursor");
window->priv->insert_label = moo_glade_xml_get_widget (xml, "insert");
window->priv->info = moo_glade_xml_get_widget (xml, "info");
g_object_unref (xml);
}

View File

@ -318,6 +318,8 @@ _moo_print_operation_init (MooPrintOperation *print)
gtk_print_operation_set_default_page_setup (GTK_PRINT_OPERATION (print),
page_setup);
gtk_print_operation_set_show_progress (GTK_PRINT_OPERATION (print), TRUE);
print->last_line = -1;
print->options = MOO_PRINT_USE_STYLES |
MOO_PRINT_HEADER | MOO_PRINT_FOOTER;

View File

@ -19,23 +19,13 @@
#include <string.h>
inline static MooTextStyle*
style_new (void)
{
return g_new (MooTextStyle, 1);
}
inline static MooTextStyle*
style_new0 (void)
{
return g_new0 (MooTextStyle, 1);
}
inline static void
style_free (MooTextStyle *style)
{
g_free (style);
}
#if GLIB_CHECK_VERSION(2,10,0)
#define style_new() g_slice_new (MooTextStyle)
#define style_free(s) g_slice_free (MooTextStyle, s)
#else
#define style_new() g_new (MooTextStyle, 1)
#define style_free g_free
#endif
MooTextStyle*

View File

@ -581,6 +581,7 @@ update_timeout (MooTerm *term)
gdk_window_invalidate_region (window, region, FALSE);
need_redraw = TRUE;
g_free (rectangles);
gdk_region_destroy (region);
gdk_region_destroy (changed);

View File

@ -572,6 +572,12 @@ moo_term_unrealize (GtkWidget *widget)
term->priv->pointer[i] = NULL;
}
if (term->priv->layout)
g_object_unref (term->priv->layout);
term->priv->layout = NULL;
_moo_term_font_free (term->priv->font);
term->priv->font = NULL;
GTK_WIDGET_CLASS(moo_term_parent_class)->unrealize (widget);
}

View File

@ -124,8 +124,6 @@ struct _PackingProps {
};
struct _MooGladeXMLPrivate {
MooMarkupDoc *doc;
MooMarkupNode *root;
GHashTable *widgets;
char *root_id;
@ -139,6 +137,8 @@ struct _MooGladeXMLPrivate {
gpointer signal_func_data;
MooGladePropFunc prop_func;
gpointer prop_func_data;
guint done : 1;
};
typedef struct {
@ -199,6 +199,7 @@ static void moo_glade_xml_add_widget (MooGladeXML *xml,
static gboolean moo_glade_xml_build (MooGladeXML *xml,
Widget *widget_node,
GtkWidget *widget);
static void moo_glade_xml_cleanup (MooGladeXML *xml);
static gboolean create_child (MooGladeXML *xml,
GtkWidget *parent,
@ -1101,11 +1102,12 @@ widget_new (MooGladeXML *xml,
g_return_val_if_fail (child != NULL, NULL);
}
widget->children = g_slist_append (widget->children, child);
widget->children = g_slist_prepend (widget->children, child);
}
}
FOREACH_ELM_END;
widget->children = g_slist_reverse (widget->children);
return widget;
}
@ -2058,10 +2060,11 @@ moo_glade_xml_parse_markup (MooGladeXML *xml,
{
MooMarkupNode *glade_elm;
MooMarkupNode *root = NULL;
Widget *widget;
Widget *widget = NULL;
gboolean result = FALSE;
g_return_val_if_fail (doc != NULL, FALSE);
g_return_val_if_fail (xml->priv->doc == NULL, FALSE);
g_return_val_if_fail (!xml->priv->done, FALSE);
g_return_val_if_fail (!root_widget || GTK_IS_WIDGET (root_widget), FALSE);
glade_elm = moo_markup_get_root_element (doc, "glade-interface");
@ -2103,40 +2106,32 @@ moo_glade_xml_parse_markup (MooGladeXML *xml,
else
g_warning ("%s: could not find root element", G_STRLOC);
return FALSE;
goto out;
}
xml->priv->doc = moo_markup_doc_ref (doc);
xml->priv->root = root;
widget = widget_new (xml, NULL, xml->priv->root);
widget = widget_new (xml, NULL, root);
if (!widget)
{
moo_markup_doc_unref (xml->priv->doc);
xml->priv->doc = NULL;
xml->priv->root = NULL;
return FALSE;
}
goto out;
dump_widget (widget);
if (!moo_glade_xml_build (xml, widget, root_widget))
{
moo_markup_doc_unref (xml->priv->doc);
xml->priv->doc = NULL;
xml->priv->root = NULL;
widget_free (widget);
return FALSE;
}
goto out;
#if 0
gtk_widget_show_all (widget->widget);
#endif
xml->priv->root_id = g_strdup (widget->id);
result = TRUE;
return TRUE;
out:
if (widget)
widget_free (widget);
moo_glade_xml_cleanup (xml);
xml->priv->done = TRUE;
return result;
}
@ -2216,6 +2211,25 @@ moo_glade_xml_add_widget (MooGladeXML *xml,
}
static void
moo_glade_xml_cleanup (MooGladeXML *xml)
{
if (xml->priv->class_to_type)
g_hash_table_destroy (xml->priv->class_to_type);
if (xml->priv->id_to_type)
g_hash_table_destroy (xml->priv->id_to_type);
if (xml->priv->id_to_func)
g_hash_table_destroy (xml->priv->id_to_func);
if (xml->priv->props)
g_hash_table_destroy (xml->priv->props);
xml->priv->class_to_type = NULL;
xml->priv->id_to_type = NULL;
xml->priv->id_to_func = NULL;
xml->priv->props = NULL;
}
static void
unref_widget (G_GNUC_UNUSED gpointer key,
GObject *widget,
@ -2231,14 +2245,10 @@ moo_glade_xml_dispose (GObject *object)
if (xml->priv)
{
moo_glade_xml_cleanup (xml);
g_hash_table_foreach (xml->priv->widgets,
(GHFunc) unref_widget, xml);
g_hash_table_destroy (xml->priv->widgets);
g_hash_table_destroy (xml->priv->class_to_type);
g_hash_table_destroy (xml->priv->id_to_type);
g_hash_table_destroy (xml->priv->id_to_func);
g_hash_table_destroy (xml->priv->props);
moo_markup_doc_unref (xml->priv->doc);
g_free (xml->priv->root_id);
g_free (xml->priv);
xml->priv = NULL;

View File

@ -1933,6 +1933,7 @@ fill_menu_shell (MooUIXML *xml,
check_separators (menu_node, toplevel);
g_slist_free (children);
return TRUE;
}
@ -2146,6 +2147,7 @@ fill_toolbar (MooUIXML *xml,
check_separators (toolbar_node, toplevel);
g_slist_free (children);
return TRUE;
}
@ -2484,6 +2486,8 @@ moo_ui_xml_finalize (GObject *object)
{
MooUIXML *xml = MOO_UI_XML (object);
g_print ("moo_ui_xml_finalize\n");
SLIST_FOREACH (xml->priv->toplevels, t)
{
Toplevel *toplevel = t->data;

View File

@ -1338,6 +1338,8 @@ moo_window_class_new_actionv (MooWindowClass *klass,
goto error;
}
moo_param_array_free ((GParameter*) action_params->data,
action_params->len);
g_array_free (action_params, FALSE);
action_params = NULL;