cddabasesrc: Fix string leaks in the unit test and a leak in cddabasesrc

This commit is contained in:
Sebastian Dröge 2009-09-17 16:57:48 +02:00
parent 6781c4c9c5
commit 901dbc6ab4
2 changed files with 13 additions and 9 deletions

View file

@ -293,6 +293,13 @@ gst_cdda_base_src_finalize (GObject * obj)
static void
gst_cdda_base_src_set_device (GstCddaBaseSrc * src, const gchar * device)
{
if (src->device)
g_free (src->device);
src->device = NULL;
if (!device)
return;
/* skip multiple slashes */
while (*device == '/' && *(device + 1) == '/')
device++;
@ -333,12 +340,7 @@ gst_cdda_base_src_set_property (GObject * object, guint prop_id,
case ARG_DEVICE:{
const gchar *dev = g_value_get_string (value);
g_free (src->device);
if (dev && *dev) {
gst_cdda_base_src_set_device (src, dev);
} else {
src->device = NULL;
}
gst_cdda_base_src_set_device (src, dev);
break;
}
case ARG_TRACK:{

View file

@ -290,20 +290,22 @@ tag_list_has_tag (GstTagList * list, const gchar * tag, GType type)
}
static void
test_uri_parse (const char *uri, const char *device, int track)
test_uri_parse (const gchar * uri, const gchar * device, gint track)
{
GstElement *foosrc;
char *set_device;
int set_track;
gchar *set_device = NULL;
gint set_track = 0;
foosrc = gst_element_factory_make ("cdfoosrc", "cdfoosrc");
fail_unless (gst_uri_handler_set_uri (GST_URI_HANDLER (foosrc), uri) == TRUE,
"couldn't set uri %s", uri);
g_object_get (foosrc, "device", &set_device, "track", &set_track, NULL);
fail_unless (set_device != NULL);
fail_unless (strcmp (set_device, device) == 0,
"device set was %s, expected %s", set_device, device);
fail_unless (set_track == track, "track set was %d, expected %d", set_track,
track);
g_free (set_device);
gst_object_unref (foosrc);
}