[sound-juicer] Remove SjMetadataMusicbraniz5Private.discid



commit 2d924f02ba9b8f921ea0518e915096fbf0d79dcc
Author: Phillip Wood <phillip wood dunelm org uk>
Date:   Sun Jul 26 14:05:29 2015 +0100

    Remove SjMetadataMusicbraniz5Private.discid
    
    priv->discid is only used in list_albums() and currently it is leaked if
    list_albums() is called more than once.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=753508

 libjuicer/sj-metadata-musicbrainz5.c |   23 +++++++++++------------
 1 files changed, 11 insertions(+), 12 deletions(-)
---
diff --git a/libjuicer/sj-metadata-musicbrainz5.c b/libjuicer/sj-metadata-musicbrainz5.c
index 7f81712..cfa711a 100644
--- a/libjuicer/sj-metadata-musicbrainz5.c
+++ b/libjuicer/sj-metadata-musicbrainz5.c
@@ -55,7 +55,6 @@ static char language[3];
 
 typedef struct {
   Mb5Query mb;
-  DiscId  *disc;
   char    *cdrom;
   GHashTable *artist_cache;
   /* Proxy */
@@ -871,6 +870,8 @@ mb5_list_albums (SjMetadata *metadata, char **url, GError **error)
   const char *discid = NULL;
   char buffer[1024];
   int i;
+  DiscId disc = NULL;
+
   g_return_val_if_fail (SJ_IS_METADATA_MUSICBRAINZ5 (metadata), NULL);
 
   self = SJ_METADATA_MUSICBRAINZ5 (metadata);
@@ -880,26 +881,26 @@ mb5_list_albums (SjMetadata *metadata, char **url, GError **error)
     return NULL;
   }
 
-  priv->disc = discid_new ();
-  if (priv->disc == NULL)
-    return NULL;
-  if (discid_read_sparse (priv->disc, priv->cdrom, 0) == 0)
+  disc = discid_new ();
+  if (disc == NULL)
     return NULL;
+  if (discid_read_sparse (disc, priv->cdrom, 0) == 0)
+    goto free_discid;
 
   if (url != NULL)
-    *url = g_strdup (discid_get_submission_url (priv->disc));
+    *url = g_strdup (discid_get_submission_url (disc));
 
   if (g_getenv("MUSICBRAINZ_FORCE_DISC_ID")) {
     discid = g_getenv("MUSICBRAINZ_FORCE_DISC_ID");
   } else {
-    discid = discid_get_id (priv->disc);
+    discid = discid_get_id (disc);
   }
 
   releases = mb5_query_lookup_discid(priv->mb, discid);
 
   if (releases == NULL) {
     print_musicbrainz_query_error (self, "discid", discid);
-    return NULL;
+    goto free_discid;
   }
 
   if (mb5_release_list_size (releases) == 0)
@@ -968,6 +969,8 @@ artist-rels";
     }
   }
   mb5_release_list_delete (releases);
+ free_discid:
+  discid_free (disc);
   return albums;
 }
 
@@ -1115,10 +1118,6 @@ sj_metadata_musicbrainz5_finalize (GObject *object)
     mb5_query_delete (priv->mb);
     priv->mb = NULL;
   }
-  if (priv->disc != NULL) {
-    discid_free (priv->disc);
-    priv->disc = NULL;
-  }
   g_free (priv->cdrom);
   g_free (priv->proxy_host);
   g_free (priv->proxy_username);


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