]> git.street.me.uk Git - andy/viking.git/commitdiff
[QA] Fix misc small memory leaks.
authorRob Norris <rw_norris@hotmail.com>
Mon, 15 Jul 2013 21:22:43 +0000 (22:22 +0100)
committerRob Norris <rw_norris@hotmail.com>
Mon, 15 Jul 2013 22:23:44 +0000 (23:23 +0100)
src/datasource_osm_my_traces.c
src/geonamessearch.c
src/modules.c
src/vikexttools.c
src/vikfilelist.c
src/vikgobjectbuilder.c
src/viktrack.c
src/vikwebtool_datasource.c
src/vikwindow.c

index 4c52dd9ef0527d66c6cef50a581a9139345fa6f3..a75af39f55fe83bd8b662939716b771b4492935e 100644 (file)
@@ -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 ) {
index 1f72cd3af3b1acb7f825cbd214586b3439d74080..0fd9380210bb24ef6f7cdcec349bd1c092bd6833 100644 (file)
@@ -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 ) );
index 638fae70331a41e5094d0a9e6ef3c5aa7159a5f0..90d36fb75caf7bd457c067ce893f96b314b0002d 100644 (file)
@@ -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
index 302c3d9e2b96d020cf5fcafadb66b9446618fb19..7ae540f5d164cd957fe3575872f5b783feea07b2 100644 (file)
@@ -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;
     }
   }
index 8ed372ca35f55fe86fe4c999e8567c9ac797763c..b2e6028a010c36be146f2d866fcb799bde47bd5c 100644 (file)
@@ -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;
 }
 
index 01403b77f14aa4613ef081b78cb6964b0c72430f..f864837487bd52856e09cd4fbd8683f984347364 100644 (file)
@@ -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)
        {
index 9d57495af90b193313db31d0cb9c928c7b78bae9..366b90fe8b67b33b646207f1c8a994b68a28e83a 100644 (file)
@@ -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;
index f2661d35e879a8ce09c1eb51c49c97bba52f55bf..299531ee515f970ec3c55554721f609d7c04e66b 100644 (file)
@@ -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;
index bebbce9f5c75ae4be8a7525a0327cba3e74ef49f..a08d9cda1e58e7b7025da06e2bb43e5fb3c60833 100644 (file)
@@ -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<LayerName>'
     // 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);