Revision: 2079
          http://gtkpod.svn.sourceforge.net/gtkpod/?rev=2079&view=rev
Author:   jcsjcs
Date:     2008-08-02 10:50:09 +0000 (Sat, 02 Aug 2008)

Log Message:
-----------
        * src/file_itunesdb (gp_import_itdb): fix memory leak. Thanks to
          Andrea.

        * src/prefs.c (prefs_get_cfgdir): fix possible memory leak. Thanks
          to Andrea.

        * src/prefs.c (temp_prefs_load): fix memory leaks. Thanks to
          Andrea.

        * src/misc.c (load_ipod_index_prefs): fix memory leaks. Thanks to
          Andrea.

Modified Paths:
--------------
    gtkpod/trunk/ChangeLog
    gtkpod/trunk/src/file_itunesdb.c
    gtkpod/trunk/src/misc.c
    gtkpod/trunk/src/prefs.c

Modified: gtkpod/trunk/ChangeLog
===================================================================
--- gtkpod/trunk/ChangeLog      2008-08-02 08:20:34 UTC (rev 2078)
+++ gtkpod/trunk/ChangeLog      2008-08-02 10:50:09 UTC (rev 2079)
@@ -1,3 +1,17 @@
+2008-0-02 Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+       * src/file_itunesdb (gp_import_itdb): fix memory leak. Thanks to
+         Andrea.
+
+       * src/prefs.c (prefs_get_cfgdir): fix possible memory leak. Thanks
+         to Andrea.
+
+       * src/prefs.c (temp_prefs_load): fix memory leaks. Thanks to
+         Andrea.
+
+       * src/misc.c (load_ipod_index_prefs): fix memory leaks. Thanks to
+         Andrea.
+
 2008-07-21 Jorg Schuler <jcsjcs at users.sourceforge.net>
 
        * src/misc_confirm (on_gtkpod_delete_event): return TRUE to

Modified: gtkpod/trunk/src/file_itunesdb.c
===================================================================
--- gtkpod/trunk/src/file_itunesdb.c    2008-08-02 08:20:34 UTC (rev 2078)
+++ gtkpod/trunk/src/file_itunesdb.c    2008-08-02 10:50:09 UTC (rev 2079)
@@ -413,7 +413,7 @@
                          const gchar *mp, const gchar *name_off,
                          const gchar *name_loc)
 {
-    gchar *cfgdir = prefs_get_cfgdir ();
+    gchar *cfgdir;
     GList *gl;
     Playlist *pod_pl;
     ExtraiTunesDBData *eitdb;
@@ -426,6 +426,8 @@
     g_return_val_if_fail (!(type & GP_ITDB_TYPE_LOCAL) || name_loc, NULL);
     g_return_val_if_fail (!(type & GP_ITDB_TYPE_IPOD) || 
                          (mp && name_off), NULL);
+
+    cfgdir = prefs_get_cfgdir ();
     g_return_val_if_fail (cfgdir, NULL);
 
     if (old_itdb)
@@ -502,7 +504,6 @@
        }
        g_free (name_ext);
        g_free (name_db);
-       g_free (cfgdir);
     }
     else
     { /* GP_ITDB_TYPE_IPOD _and_ iPod is connected */
@@ -557,6 +558,7 @@
        g_free (name_db);
        g_free (itunes_dir);
     }
+    g_free (cfgdir);
 
     if (!itdb)
     {
@@ -1972,7 +1974,7 @@
              }
          }
       }
-      if (success && cfgdir)
+      if (success)
       {   /* copy to cfgdir */
          GError *error = NULL;
          if (!itdb_cp (itdb->filename, eitdb->offline_filename, &error))

Modified: gtkpod/trunk/src/misc.c
===================================================================
--- gtkpod/trunk/src/misc.c     2008-08-02 08:20:34 UTC (rev 2078)
+++ gtkpod/trunk/src/misc.c     2008-08-02 10:50:09 UTC (rev 2079)
@@ -1690,12 +1690,14 @@
        GError *error = NULL;
        gchar *path = g_build_filename (dir, "gtkpod.prefs", NULL);
        temp_prefs = temp_prefs_load (path, &error);
+       g_free (path);
        if (temp_prefs)
        {
            gchar *subkey;
            subkey = get_itdb_prefs_key (index, "");
            /* rename 'itdb_*' to 'itdb_<index>_*' */
            temp_prefs_rename_subkey (temp_prefs, "itdb_", subkey);
+           g_free (subkey);
            /* merge with real prefs */
            temp_prefs_apply (temp_prefs);
            /* destroy temp prefs */

Modified: gtkpod/trunk/src/prefs.c
===================================================================
--- gtkpod/trunk/src/prefs.c    2008-08-02 08:20:34 UTC (rev 2078)
+++ gtkpod/trunk/src/prefs.c    2008-08-02 10:50:09 UTC (rev 2079)
@@ -567,16 +567,17 @@
     {
        if ((g_mkdir(folder, 0777)) == -1)
        {
-           printf(_("Couldn't create ~/.gtkpod\n"));
+           printf(_("Couldn't create '%s'\n"), folder);
+           g_free (folder);
            return NULL;
        }
     }
-       
     return folder;
 }
 
 
 /* get @key and @value from a string like "key=value" */
+/* you must g_free (*key) and (*value) after use */
 static gboolean read_prefs_get_key_value (const gchar *buf,
                                          gchar **key, gchar **value)
 {
@@ -790,7 +791,7 @@
 
        do
        {
-           gchar *line;
+           gchar *line = NULL;
 
            status = g_io_channel_read_line (gio, &line, NULL, NULL, error);
            if (status == G_IO_STATUS_NORMAL)
@@ -799,9 +800,11 @@
                if (read_prefs_get_key_value (line, &key, &value))
                {
                    temp_prefs_set_string (temp_prefs, key, value);
+                   g_free (key);
+                   g_free (value);
                }
-               g_free (line);
            }
+           g_free (line);
        } while (status == G_IO_STATUS_NORMAL);
 
        g_io_channel_unref (gio);


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2

Reply via email to