mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-04 17:52:29 +00:00
cddabasesrc: Fix string leaks in the unit test and a leak in cddabasesrc
This commit is contained in:
parent
6781c4c9c5
commit
901dbc6ab4
2 changed files with 13 additions and 9 deletions
|
@ -293,6 +293,13 @@ gst_cdda_base_src_finalize (GObject * obj)
|
||||||
static void
|
static void
|
||||||
gst_cdda_base_src_set_device (GstCddaBaseSrc * src, const gchar * device)
|
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 */
|
/* skip multiple slashes */
|
||||||
while (*device == '/' && *(device + 1) == '/')
|
while (*device == '/' && *(device + 1) == '/')
|
||||||
device++;
|
device++;
|
||||||
|
@ -333,12 +340,7 @@ gst_cdda_base_src_set_property (GObject * object, guint prop_id,
|
||||||
case ARG_DEVICE:{
|
case ARG_DEVICE:{
|
||||||
const gchar *dev = g_value_get_string (value);
|
const gchar *dev = g_value_get_string (value);
|
||||||
|
|
||||||
g_free (src->device);
|
|
||||||
if (dev && *dev) {
|
|
||||||
gst_cdda_base_src_set_device (src, dev);
|
gst_cdda_base_src_set_device (src, dev);
|
||||||
} else {
|
|
||||||
src->device = NULL;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ARG_TRACK:{
|
case ARG_TRACK:{
|
||||||
|
|
|
@ -290,20 +290,22 @@ tag_list_has_tag (GstTagList * list, const gchar * tag, GType type)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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;
|
GstElement *foosrc;
|
||||||
char *set_device;
|
gchar *set_device = NULL;
|
||||||
int set_track;
|
gint set_track = 0;
|
||||||
|
|
||||||
foosrc = gst_element_factory_make ("cdfoosrc", "cdfoosrc");
|
foosrc = gst_element_factory_make ("cdfoosrc", "cdfoosrc");
|
||||||
fail_unless (gst_uri_handler_set_uri (GST_URI_HANDLER (foosrc), uri) == TRUE,
|
fail_unless (gst_uri_handler_set_uri (GST_URI_HANDLER (foosrc), uri) == TRUE,
|
||||||
"couldn't set uri %s", uri);
|
"couldn't set uri %s", uri);
|
||||||
g_object_get (foosrc, "device", &set_device, "track", &set_track, NULL);
|
g_object_get (foosrc, "device", &set_device, "track", &set_track, NULL);
|
||||||
|
fail_unless (set_device != NULL);
|
||||||
fail_unless (strcmp (set_device, device) == 0,
|
fail_unless (strcmp (set_device, device) == 0,
|
||||||
"device set was %s, expected %s", set_device, device);
|
"device set was %s, expected %s", set_device, device);
|
||||||
fail_unless (set_track == track, "track set was %d, expected %d", set_track,
|
fail_unless (set_track == track, "track set was %d, expected %d", set_track,
|
||||||
track);
|
track);
|
||||||
|
g_free (set_device);
|
||||||
gst_object_unref (foosrc);
|
gst_object_unref (foosrc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue