mirror of https://github.com/GNOME/gimp.git
app: valgrind found a bunch of memory leaks
This commit is contained in:
parent
3b925cd78e
commit
e4f0bb0dfe
|
@ -830,6 +830,7 @@ tools_actions_setup (GimpActionGroup *group)
|
|||
tools_select_cmd_callback);
|
||||
|
||||
g_free (name);
|
||||
g_free (long_label);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -860,6 +860,7 @@ gimp_core_config_finalize (GObject *object)
|
|||
GimpCoreConfig *core_config = GIMP_CORE_CONFIG (object);
|
||||
|
||||
g_free (core_config->language);
|
||||
g_free (core_config->prev_language);
|
||||
g_free (core_config->plug_in_path);
|
||||
g_free (core_config->module_path);
|
||||
g_free (core_config->interpreter_path);
|
||||
|
|
|
@ -348,6 +348,7 @@ gimp_extension_load (GimpExtension *extension,
|
|||
appdata_name = g_strdup_printf ("%s.metainfo.xml",
|
||||
gimp_object_get_name (GIMP_OBJECT (extension)));
|
||||
path = g_build_filename (extension->p->path, appdata_name, NULL);
|
||||
g_free (appdata_name);
|
||||
|
||||
app = as_app_new ();
|
||||
success = as_app_parse_file (app, path,
|
||||
|
|
|
@ -243,8 +243,6 @@ gimp_display_shell_canvas_tick (GtkWidget *widget,
|
|||
/* undo size request from gimp_display_shell_constructed() */
|
||||
gtk_widget_set_size_request (widget, -1, -1);
|
||||
|
||||
g_free (tick);
|
||||
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
|
@ -277,7 +275,7 @@ gimp_display_shell_canvas_size_allocate (GtkWidget *widget,
|
|||
|
||||
gtk_widget_add_tick_callback (widget,
|
||||
(GtkTickCallback) gimp_display_shell_canvas_tick,
|
||||
tick, NULL);
|
||||
tick, (GDestroyNotify) g_free);
|
||||
}
|
||||
|
||||
gboolean
|
||||
|
|
|
@ -635,6 +635,8 @@ gimp_statusbar_finalize (GObject *object)
|
|||
|
||||
g_clear_object (&statusbar->icon);
|
||||
g_clear_pointer (&statusbar->icon_hash, g_hash_table_unref);
|
||||
g_clear_pointer (&statusbar->cursor_string_last, g_free);
|
||||
g_clear_pointer (&statusbar->cursor_string_todraw, g_free);
|
||||
|
||||
g_slist_free_full (statusbar->messages,
|
||||
(GDestroyNotify) gimp_statusbar_msg_free);
|
||||
|
|
|
@ -864,9 +864,10 @@ gui_check_unique_accelerators (Gimp *gimp)
|
|||
gchar *detailed_name;
|
||||
|
||||
detailed_name = g_strdup_printf ("app.%s", actions[i]);
|
||||
|
||||
accels = gtk_application_get_accels_for_action (GTK_APPLICATION (gimp->app),
|
||||
detailed_name);
|
||||
g_free (detailed_name);
|
||||
|
||||
for (gint j = 0; accels[j] != NULL; j++)
|
||||
{
|
||||
for (gint k = i + 1; actions[k] != NULL; k++)
|
||||
|
@ -877,6 +878,8 @@ gui_check_unique_accelerators (Gimp *gimp)
|
|||
detailed_name2 = g_strdup_printf ("app.%s", actions[k]);
|
||||
accels2 = gtk_application_get_accels_for_action (GTK_APPLICATION (gimp->app),
|
||||
detailed_name2);
|
||||
g_free (detailed_name2);
|
||||
|
||||
for (gint l = 0; accels2[l] != NULL; l++)
|
||||
{
|
||||
if (g_strcmp0 (accels[j], accels2[l]) == 0)
|
||||
|
@ -920,10 +923,13 @@ gui_check_unique_accelerators (Gimp *gimp)
|
|||
(const gchar **) disabled_accels);
|
||||
}
|
||||
}
|
||||
|
||||
g_strfreev (accels2);
|
||||
}
|
||||
}
|
||||
|
||||
g_strfreev (accels);
|
||||
}
|
||||
|
||||
g_strfreev (actions);
|
||||
}
|
||||
|
|
|
@ -417,9 +417,9 @@ gimp_menu_model_get_position (GimpMenuModel *model,
|
|||
|
||||
for (iter = model->priv->items; iter; iter = iter->next)
|
||||
{
|
||||
const gchar *cur_action_name = NULL;
|
||||
GMenuModel *subsection;
|
||||
GMenuModel *submenu;
|
||||
const gchar *cur_action_name = NULL;
|
||||
|
||||
subsection = g_menu_item_get_link (iter->data, G_MENU_LINK_SECTION);
|
||||
submenu = g_menu_item_get_link (iter->data, G_MENU_LINK_SUBMENU);
|
||||
|
@ -446,7 +446,8 @@ gimp_menu_model_get_position (GimpMenuModel *model,
|
|||
else
|
||||
real_action_name = cur_action_name;
|
||||
|
||||
cur_action = gimp_ui_manager_find_action (model->priv->manager, NULL, cur_action_name);
|
||||
cur_action = gimp_ui_manager_find_action (model->priv->manager,
|
||||
NULL, cur_action_name);
|
||||
}
|
||||
|
||||
if (cur_action_name != NULL &&
|
||||
|
@ -470,6 +471,7 @@ gimp_menu_model_get_position (GimpMenuModel *model,
|
|||
len++;
|
||||
}
|
||||
}
|
||||
|
||||
g_clear_object (&subsection);
|
||||
g_clear_object (&submenu);
|
||||
}
|
||||
|
@ -760,7 +762,8 @@ gimp_menu_model_initialize (GimpMenuModel *model,
|
|||
G_CALLBACK (gimp_menu_model_action_notify_visible),
|
||||
model, 0);
|
||||
|
||||
g_menu_item_get_attribute (item, "label-variant", "s", &label_variant);
|
||||
g_menu_item_get_attribute (item, "label-variant", "s",
|
||||
&label_variant);
|
||||
if (g_strcmp0 (label_variant, "long") == 0)
|
||||
g_menu_item_set_label (item, gimp_action_get_label (action));
|
||||
else
|
||||
|
@ -774,9 +777,11 @@ gimp_menu_model_initialize (GimpMenuModel *model,
|
|||
"notify::label",
|
||||
G_CALLBACK (gimp_menu_model_action_notify_label),
|
||||
item, 0);
|
||||
|
||||
g_free (label_variant);
|
||||
}
|
||||
/* else we instal a placeholder (no-action and always invisible) item. */
|
||||
|
||||
/* else we instal a placeholder (no-action and always invisible) item. */
|
||||
}
|
||||
|
||||
if (item)
|
||||
|
@ -813,7 +818,7 @@ gimp_menu_model_handles_subpath (GimpMenuModel *model,
|
|||
{
|
||||
GMenuModel *submenu = NULL;
|
||||
GMenuModel *subsection = NULL;
|
||||
const gchar *label = NULL;
|
||||
gchar *label = NULL;
|
||||
GMenuItem *item = iter->data;
|
||||
|
||||
subsection = g_menu_item_get_link (item, G_MENU_LINK_SECTION);
|
||||
|
@ -827,6 +832,7 @@ gimp_menu_model_handles_subpath (GimpMenuModel *model,
|
|||
*/
|
||||
if (! gimp_menu_model_handles_subpath (GIMP_MENU_MODEL (subsection), path))
|
||||
{
|
||||
g_free (label);
|
||||
g_clear_object (&subsection);
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -837,18 +843,23 @@ gimp_menu_model_handles_subpath (GimpMenuModel *model,
|
|||
|
||||
g_return_val_if_fail (label != NULL, FALSE);
|
||||
subpath = g_strdup_printf ("%s/", GIMP_MENU_MODEL (submenu)->priv->path);
|
||||
|
||||
if (g_strcmp0 (path, GIMP_MENU_MODEL (submenu)->priv->path) == 0 ||
|
||||
g_str_has_prefix (path, subpath))
|
||||
{
|
||||
/* A submodel will handle the new path. */
|
||||
g_free (subpath);
|
||||
g_free (label);
|
||||
g_clear_object (&subsection);
|
||||
g_clear_object (&submenu);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
g_free (subpath);
|
||||
}
|
||||
|
||||
g_free (label);
|
||||
g_clear_object (&subsection);
|
||||
g_clear_object (&submenu);
|
||||
}
|
||||
|
@ -866,9 +877,9 @@ gimp_menu_model_get_item (GimpMenuModel *model,
|
|||
|
||||
for (GList *iter = m->priv->items; iter; iter = iter->next)
|
||||
{
|
||||
const gchar *action_name = NULL;
|
||||
GMenuModel *subsection;
|
||||
GMenuModel *submenu;
|
||||
const gchar *action_name = NULL;
|
||||
|
||||
subsection = g_menu_item_get_link (iter->data, G_MENU_LINK_SECTION);
|
||||
submenu = g_menu_item_get_link (iter->data, G_MENU_LINK_SUBMENU);
|
||||
|
@ -886,7 +897,9 @@ gimp_menu_model_get_item (GimpMenuModel *model,
|
|||
{
|
||||
GimpAction *action;
|
||||
|
||||
action = gimp_ui_manager_find_action (model->priv->manager, NULL, action_name);
|
||||
action = gimp_ui_manager_find_action (model->priv->manager, NULL,
|
||||
action_name);
|
||||
|
||||
if (gimp_action_is_visible (action))
|
||||
cur++;
|
||||
}
|
||||
|
@ -975,7 +988,8 @@ gimp_menu_model_action_notify_visible (GimpAction *action,
|
|||
gint pos;
|
||||
gboolean visible;
|
||||
|
||||
pos = gimp_menu_model_get_position (model, gimp_action_get_name (action), &visible);
|
||||
pos = gimp_menu_model_get_position (model, gimp_action_get_name (action),
|
||||
&visible);
|
||||
|
||||
if (visible)
|
||||
g_menu_model_items_changed (G_MENU_MODEL (model), pos, 0, 1);
|
||||
|
|
|
@ -576,7 +576,8 @@ gimp_ui_manager_remove_ui (GimpUIManager *manager,
|
|||
|
||||
if (g_strcmp0 (item->action_name, action_name) == 0)
|
||||
{
|
||||
g_signal_emit (manager, manager_signals[UI_REMOVED], 0, item->path, item->action_name);
|
||||
g_signal_emit (manager, manager_signals[UI_REMOVED], 0,
|
||||
item->path, item->action_name);
|
||||
manager->ui_items = g_list_remove_link (manager->ui_items, iter);
|
||||
gimp_ui_manager_menu_item_free (item);
|
||||
break;
|
||||
|
@ -601,8 +602,10 @@ gimp_ui_manager_remove_uis (GimpUIManager *manager,
|
|||
if (action_name_prefix == NULL ||
|
||||
g_str_has_prefix (item->action_name, action_name_prefix))
|
||||
{
|
||||
g_signal_emit (manager, manager_signals[UI_REMOVED], 0, item->path, item->action_name);
|
||||
manager->ui_items = g_list_remove_link (manager->ui_items, current_iter);
|
||||
g_signal_emit (manager, manager_signals[UI_REMOVED], 0,
|
||||
item->path, item->action_name);
|
||||
manager->ui_items = g_list_remove_link (manager->ui_items,
|
||||
current_iter);
|
||||
gimp_ui_manager_menu_item_free (item);
|
||||
}
|
||||
}
|
||||
|
@ -624,11 +627,13 @@ gimp_ui_manager_add_ui (GimpUIManager *manager,
|
|||
item = g_slice_new0 (GimpUIManagerMenuItem);
|
||||
item->path = g_strdup (path);
|
||||
item->action_name = g_strdup (action_name);
|
||||
item->placeholder = placeholder ? g_strdup (placeholder) : NULL;
|
||||
item->placeholder = g_strdup (placeholder);
|
||||
item->top = top;
|
||||
|
||||
manager->ui_items = g_list_prepend (manager->ui_items, item);
|
||||
|
||||
g_signal_emit (manager, manager_signals[UI_ADDED], 0, path, action_name, placeholder, top);
|
||||
g_signal_emit (manager, manager_signals[UI_ADDED], 0,
|
||||
path, action_name, placeholder, top);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -640,7 +645,8 @@ gimp_ui_manager_foreach_ui (GimpUIManager *manager,
|
|||
{
|
||||
GimpUIManagerMenuItem *item = iter->data;
|
||||
|
||||
callback (manager, item->path, item->action_name, item->placeholder, item->top, user_data);
|
||||
callback (manager, item->path, item->action_name, item->placeholder,
|
||||
item->top, user_data);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1145,6 +1151,7 @@ gimp_ui_manager_menu_item_free (GimpUIManagerMenuItem *item)
|
|||
{
|
||||
g_free (item->path);
|
||||
g_free (item->action_name);
|
||||
g_free (item->placeholder);
|
||||
|
||||
g_slice_free (GimpUIManagerMenuItem, item);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue