[easytag/easytag-2-2] Fix more CDDB track number memory leaks



commit 5201567287b9a9da263d9bd4be1fae8701f205d6
Author: David King <amigadave amigadave com>
Date:   Mon Nov 3 23:00:52 2014 +0000

    Fix more CDDB track number memory leaks

 src/cddb.c |   37 ++++++++++++++++++++++---------------
 1 files changed, 22 insertions(+), 15 deletions(-)
---
diff --git a/src/cddb.c b/src/cddb.c
index 5de1dfe..2a31e7e 100644
--- a/src/cddb.c
+++ b/src/cddb.c
@@ -3927,7 +3927,6 @@ Cddb_Set_Track_Infos_To_File_List (void)
     GList *file_iterlist = NULL;
     GList *file_selectedrows;
     GList *selectedrows = NULL;
-    gchar buffer[256];
     gboolean CddbTrackList_Line_Selected;
     gboolean cddbsettoallfields, cddbsettotitle,      cddbsettoartist, cddbsettoalbum, cddbsettoyear,
              cddbsettotrack,     cddbsettotracktotal, cddbsettogenre,  cddbsettofilename;
@@ -4220,18 +4219,25 @@ Cddb_Set_Track_Infos_To_File_List (void)
 
                 if (cddbsettoallfields || cddbsettotrack)
                 {
-                    snprintf (buffer, sizeof (buffer), "%s",
-                              et_track_number_to_string (cddbtrackalbum->track_number));
+                    gchar *track_number;
+
+                    track_number = et_track_number_to_string (cddbtrackalbum->track_number);
 
-                    ET_Set_Field_File_Tag_Item(&FileTag->track,buffer);
+                    ET_Set_Field_File_Tag_Item (&FileTag->track, track_number);
+
+                    g_free (track_number);
                 }
 
                 if (cddbsettoallfields || cddbsettotracktotal)
                 {
-                    snprintf (buffer, sizeof (buffer), "%s",
-                              et_track_number_to_string (list_length));
+                    gchar *track_total;
+
+                    track_total = et_track_number_to_string (list_length);
+
+                    ET_Set_Field_File_Tag_Item (&FileTag->track_total,
+                                                track_total);
 
-                    ET_Set_Field_File_Tag_Item(&FileTag->track_total,buffer);
+                    g_free (track_total);
                 }
 
                 if ( (cddbsettoallfields || cddbsettogenre) && (cddbtrackalbum->cddbalbum->genre || 
cddbtrackalbum->cddbalbum->category) )
@@ -4243,27 +4249,28 @@ Cddb_Set_Track_Infos_To_File_List (void)
                 }
             }
 
-            /*
-             * Filename field
-             */
+            /* Filename field. */
             if ( (cddbsettoallfields || cddbsettofilename) )
             {
+                gchar *track_number;
                 gchar *filename_generated_utf8;
                 gchar *filename_new_utf8;
 
                 // Allocation of a new FileName
                 FileName = ET_File_Name_Item_New();
 
-                // Build the filename with the path
-                snprintf (buffer, sizeof (buffer), "%s",
-                          et_track_number_to_string (cddbtrackalbum->track_number));
+                /* Build the filename with the path. */
+                track_number = et_track_number_to_string (cddbtrackalbum->track_number);
 
-                filename_generated_utf8 = g_strconcat(buffer," - ",cddbtrackalbum->track_name,NULL);
+                filename_generated_utf8 = g_strconcat (track_number, " - ",
+                                                       cddbtrackalbum->track_name,
+                                                       NULL);
                 ET_File_Name_Convert_Character(filename_generated_utf8); // Replace invalid characters
                 filename_new_utf8 = ET_File_Name_Generate(etfile,filename_generated_utf8);
 
                 ET_Set_Filename_File_Name_Item(FileName,filename_new_utf8,NULL);
 
+                g_free (track_number);
                 g_free(filename_generated_utf8);
                 g_free(filename_new_utf8);
             }
@@ -4279,7 +4286,7 @@ Cddb_Set_Track_Infos_To_File_List (void)
         file_iterlist = file_iterlist->next;
     }
 
-    g_list_free_full (file_iterlist, (GDestroyNotify)g_free);
+    g_list_free_full (g_list_first (file_iterlist), (GDestroyNotify)g_free);
 
     Browser_List_Refresh_Whole_List();
     ET_Display_File_Data_To_UI(ETCore->ETFileDisplayed);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]