From 644eea0ee18cdfc110d4cb28f16842d0e2fc0b46 Mon Sep 17 00:00:00 2001 From: Rob Norris Date: Mon, 15 Jul 2013 22:22:43 +0100 Subject: [PATCH] [QA] Fix misc small memory leaks. --- src/datasource_osm_my_traces.c | 2 ++ src/geonamessearch.c | 1 + src/modules.c | 5 +++++ src/vikexttools.c | 2 ++ src/vikfilelist.c | 2 +- src/vikgobjectbuilder.c | 4 ++-- src/viktrack.c | 2 +- src/vikwebtool_datasource.c | 5 +++-- src/vikwindow.c | 8 +++++++- 9 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/datasource_osm_my_traces.c b/src/datasource_osm_my_traces.c index 4c52dd9e..a75af39f 100644 --- a/src/datasource_osm_my_traces.c +++ b/src/datasource_osm_my_traces.c @@ -494,6 +494,7 @@ static GList *select_from_list (GtkWindow *parent, GList *list, const gchar *tit } list_runner = g_list_next ( list_runner ); } + g_free ( name ); } } while ( gtk_tree_model_iter_next ( GTK_TREE_MODEL(store), &iter ) ); @@ -645,6 +646,7 @@ static gboolean datasource_osm_my_traces_process ( VikTrwLayer *vtl, const gchar // TODO feedback to UI to inform which traces failed if ( !result ) g_warning ( _("Unable to get trace: %s"), url ); + g_free ( url ); } if ( result ) { diff --git a/src/geonamessearch.c b/src/geonamessearch.c index 1f72cd3a..0fd93802 100644 --- a/src/geonamessearch.c +++ b/src/geonamessearch.c @@ -230,6 +230,7 @@ static GList *a_select_geoname_from_list(GtkWindow *parent, GList *geonames, gbo } geoname_runner = g_list_next(geoname_runner); } + g_free ( name ); } } while ( gtk_tree_model_iter_next ( GTK_TREE_MODEL(store), &iter ) ); diff --git a/src/modules.c b/src/modules.c index 638fae70..90d36fb7 100644 --- a/src/modules.c +++ b/src/modules.c @@ -120,6 +120,7 @@ modules_load_config_dir(const gchar *dir) vik_gobject_builder_parse (builder, maps); g_object_unref (builder); } + g_free ( maps ); /* External tools */ gchar *tools = g_build_filename(dir, VIKING_EXTTOOLS_FILE, NULL); @@ -130,6 +131,7 @@ modules_load_config_dir(const gchar *dir) vik_gobject_builder_parse (builder, tools); g_object_unref (builder); } + g_free ( tools ); gchar *datasources = g_build_filename(dir, VIKING_DATASOURCES_FILE, NULL); if (g_access (datasources, R_OK) == 0) @@ -139,6 +141,7 @@ modules_load_config_dir(const gchar *dir) vik_gobject_builder_parse (builder, datasources); g_object_unref (builder); } + g_free ( datasources ); /* Go-to search engines */ gchar *go_to = g_build_filename(dir, VIKING_GOTOTOOLS_FILE, NULL); @@ -149,6 +152,7 @@ modules_load_config_dir(const gchar *dir) vik_gobject_builder_parse (builder, go_to); g_object_unref (builder); } + g_free ( go_to ); /* Routing engines */ gchar *routing = g_build_filename(dir, VIKING_ROUTING_FILE, NULL); @@ -159,6 +163,7 @@ modules_load_config_dir(const gchar *dir) vik_gobject_builder_parse (builder, routing); g_object_unref (builder); } + g_free ( routing ); } static void diff --git a/src/vikexttools.c b/src/vikexttools.c index 302c3d9e..7ae540f5 100644 --- a/src/vikexttools.c +++ b/src/vikexttools.c @@ -73,6 +73,8 @@ void vik_ext_tools_add_action_items ( VikWindow *vwindow, GtkUIManager *uim, Gtk gtk_action_group_add_action ( action_group, action ); + g_object_unref ( action ); + g_free ( label ); label = NULL; } } diff --git a/src/vikfilelist.c b/src/vikfilelist.c index 8ed372ca..b2e6028a 100644 --- a/src/vikfilelist.c +++ b/src/vikfilelist.c @@ -199,7 +199,7 @@ static gboolean get_file_name(GtkTreeModel *model, GtkTreePath *path, GtkTreeIte gchar *str; gtk_tree_model_get ( model, iter, 0, &str, -1 ); g_debug ("%s: %s", __FUNCTION__, str); - (*list) = g_list_append((*list), g_strdup(str)); + (*list) = g_list_append((*list), str); // NB str is already a copy return FALSE; } diff --git a/src/vikgobjectbuilder.c b/src/vikgobjectbuilder.c index 01403b77..f8648374 100644 --- a/src/vikgobjectbuilder.c +++ b/src/vikgobjectbuilder.c @@ -34,7 +34,6 @@ #include "vikgobjectbuilder.h" /* FIXME use private fields */ -static gchar *class_name = NULL; GType gtype = 0; gchar *property_name = NULL; GParameter *parameters = NULL; @@ -104,13 +103,14 @@ _start_element (GMarkupParseContext *context, { if (strcmp(element_name, "object") == 0) { - class_name = g_strdup(attribute_values[0]); + gchar *class_name = g_strdup(attribute_values[0]); gtype = g_type_from_name (class_name); if (gtype == 0) { g_warning("Unknown GObject type '%s'", class_name); return; } + g_free (class_name); } if (strcmp(element_name, "property") == 0 && gtype != 0) { diff --git a/src/viktrack.c b/src/viktrack.c index 9d57495a..366b90fe 100644 --- a/src/viktrack.c +++ b/src/viktrack.c @@ -1390,7 +1390,7 @@ void vik_track_calculate_bounds ( VikTrack *trk ) tp_iter = tp_iter->next; } - g_debug ( g_strdup_printf("Bounds of track: '%s' is: %f,%f to: %f,%f", trk->name, topleft.lat, topleft.lon, bottomright.lat, bottomright.lon ) ); + g_debug ( "Bounds of track: '%s' is: %f,%f to: %f,%f", trk->name, topleft.lat, topleft.lon, bottomright.lat, bottomright.lon ); trk->bbox.north = topleft.lat; trk->bbox.east = bottomright.lon; diff --git a/src/vikwebtool_datasource.c b/src/vikwebtool_datasource.c index f2661d35..299531ee 100644 --- a/src/vikwebtool_datasource.c +++ b/src/vikwebtool_datasource.c @@ -352,7 +352,7 @@ static gchar *webtool_datasource_get_url ( VikWebtool *self, VikWindow *vw ) gchar* values[MAX_NUMBER_CODES]; int i; for ( i = 0; i < MAX_NUMBER_CODES; i++ ) { - values[i] = g_strdup ( "" ); + values[i] = '\0'; } for ( i = 0; i < len; i++ ) { @@ -371,7 +371,8 @@ static gchar *webtool_datasource_get_url ( VikWebtool *self, VikWindow *vw ) gchar *url = g_strdup_printf ( priv->url, values[0], values[1], values[2], values[3], values[4], values[5], values[6] ); for ( i = 0; i < MAX_NUMBER_CODES; i++ ) { - g_free ( values[i] ); + if ( values[i] != '\0' ) + g_free ( values[i] ); } return url; diff --git a/src/vikwindow.c b/src/vikwindow.c index bebbce9f..a08d9cda 100644 --- a/src/vikwindow.c +++ b/src/vikwindow.c @@ -3865,6 +3865,8 @@ static void window_create_ui( VikWindow *window ) action.callback = (GCallback)menu_addlayer_cb; gtk_action_group_add_actions(action_group, &action, 1, window); + g_free ( (gchar*)action.label ); + if ( vik_layer_get_interface(i)->tools_count ) { gtk_ui_manager_add_ui(uim, mid, "/ui/MainMenu/Tools/", vik_layer_get_interface(i)->name, NULL, GTK_UI_MANAGER_SEPARATOR, FALSE); gtk_ui_manager_add_ui(uim, mid, "/ui/MainToolbar/ToolItems/", vik_layer_get_interface(i)->name, NULL, GTK_UI_MANAGER_SEPARATOR, FALSE); @@ -3893,10 +3895,12 @@ static void window_create_ui( VikWindow *window ) } GtkActionEntry action_dl; + gchar *layername = g_strdup_printf ( "Layer%s", vik_layer_get_interface(i)->fixed_layer_name ); gtk_ui_manager_add_ui(uim, mid, "/ui/MainMenu/Edit/LayerDefaults", vik_layer_get_interface(i)->name, - g_strdup_printf("Layer%s", vik_layer_get_interface(i)->fixed_layer_name), + layername, GTK_UI_MANAGER_MENUITEM, FALSE); + g_free (layername); // For default layers use action names of the form 'Layer' // This is to avoid clashing with just the layer name used above for the tool actions @@ -3907,6 +3911,8 @@ static void window_create_ui( VikWindow *window ) action_dl.tooltip = NULL; action_dl.callback = (GCallback)layer_defaults_cb; gtk_action_group_add_actions(action_group, &action_dl, 1, window); + g_free ( (gchar*)action_dl.name ); + g_free ( (gchar*)action_dl.label ); } g_object_unref (icon_factory); -- 2.39.5