summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim.muller@collabora.co.uk>2009-05-31 15:17:45 (GMT)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>2009-05-31 15:17:45 (GMT)
commit7c4e618471eb4218785d5891da46b67de952397e (patch)
tree1521f009dd962ca57058faff97b741d094520bee
parent30c890c7a2b8140da0ac2fd964a7023cd5fb22ca (diff)
taglists: make _get_{string|pointer} return FALSE for NULL values
Make gst_tag_list_get_string() return FALSE for NULL strings and empty strings, and gst_tag_list_get_pointer() return FALSE for NULL pointers, like we do with dates and buffers. Fixes #560345.
-rw-r--r--gst/gsttaglist.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/gst/gsttaglist.c b/gst/gsttaglist.c
index 766995e..bc9678c 100644
--- a/gst/gsttaglist.c
+++ b/gst/gsttaglist.c
@@ -1066,7 +1066,7 @@ gst_tag_list_copy_value (GValue * dest, const GstTagList * list,
/***** evil macros to get all the gst_tag_list_get_*() functions right *****/
-#define TAG_MERGE_FUNCS(name,type) \
+#define TAG_MERGE_FUNCS(name,type,ret) \
gboolean \
gst_tag_list_get_ ## name (const GstTagList *list, const gchar *tag, \
type *value) \
@@ -1081,7 +1081,7 @@ gst_tag_list_get_ ## name (const GstTagList *list, const gchar *tag, \
return FALSE; \
*value = COPY_FUNC (g_value_get_ ## name (&v)); \
g_value_unset (&v); \
- return TRUE; \
+ return ret; \
} \
\
gboolean \
@@ -1098,7 +1098,7 @@ gst_tag_list_get_ ## name ## _index (const GstTagList *list, \
if ((v = gst_tag_list_get_value_index (list, tag, index)) == NULL) \
return FALSE; \
*value = COPY_FUNC (g_value_get_ ## name (v)); \
- return TRUE; \
+ return ret; \
}
/* FIXME 0.11: maybe get rid of _get_char*(), _get_uchar*(), _get_long*(),
@@ -1131,7 +1131,7 @@ gst_tag_list_get_ ## name ## _index (const GstTagList *list, \
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list.
*/
-TAG_MERGE_FUNCS (char, gchar)
+TAG_MERGE_FUNCS (char, gchar, TRUE)
/**
* gst_tag_list_get_uchar:
* @list: a #GstTagList to get the tag from
@@ -1157,7 +1157,7 @@ TAG_MERGE_FUNCS (char, gchar)
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list.
*/
-TAG_MERGE_FUNCS (uchar, guchar)
+TAG_MERGE_FUNCS (uchar, guchar, TRUE)
/**
* gst_tag_list_get_boolean:
* @list: a #GstTagList to get the tag from
@@ -1183,7 +1183,7 @@ TAG_MERGE_FUNCS (uchar, guchar)
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list.
*/
-TAG_MERGE_FUNCS (boolean, gboolean)
+TAG_MERGE_FUNCS (boolean, gboolean, TRUE)
/**
* gst_tag_list_get_int:
* @list: a #GstTagList to get the tag from
@@ -1209,7 +1209,7 @@ TAG_MERGE_FUNCS (boolean, gboolean)
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list.
*/
-TAG_MERGE_FUNCS (int, gint)
+TAG_MERGE_FUNCS (int, gint, TRUE)
/**
* gst_tag_list_get_uint:
* @list: a #GstTagList to get the tag from
@@ -1235,7 +1235,7 @@ TAG_MERGE_FUNCS (int, gint)
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list.
*/
-TAG_MERGE_FUNCS (uint, guint)
+TAG_MERGE_FUNCS (uint, guint, TRUE)
/**
* gst_tag_list_get_long:
* @list: a #GstTagList to get the tag from
@@ -1261,7 +1261,7 @@ TAG_MERGE_FUNCS (uint, guint)
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list.
*/
-TAG_MERGE_FUNCS (long, glong)
+TAG_MERGE_FUNCS (long, glong, TRUE)
/**
* gst_tag_list_get_ulong:
* @list: a #GstTagList to get the tag from
@@ -1287,7 +1287,7 @@ TAG_MERGE_FUNCS (long, glong)
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list.
*/
-TAG_MERGE_FUNCS (ulong, gulong)
+TAG_MERGE_FUNCS (ulong, gulong, TRUE)
/**
* gst_tag_list_get_int64:
* @list: a #GstTagList to get the tag from
@@ -1313,7 +1313,7 @@ TAG_MERGE_FUNCS (ulong, gulong)
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list.
*/
-TAG_MERGE_FUNCS (int64, gint64)
+TAG_MERGE_FUNCS (int64, gint64, TRUE)
/**
* gst_tag_list_get_uint64:
* @list: a #GstTagList to get the tag from
@@ -1339,7 +1339,7 @@ TAG_MERGE_FUNCS (int64, gint64)
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list.
*/
-TAG_MERGE_FUNCS (uint64, guint64)
+TAG_MERGE_FUNCS (uint64, guint64, TRUE)
/**
* gst_tag_list_get_float:
* @list: a #GstTagList to get the tag from
@@ -1365,7 +1365,7 @@ TAG_MERGE_FUNCS (uint64, guint64)
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list.
*/
-TAG_MERGE_FUNCS (float, gfloat)
+TAG_MERGE_FUNCS (float, gfloat, TRUE)
/**
* gst_tag_list_get_double:
* @list: a #GstTagList to get the tag from
@@ -1391,7 +1391,7 @@ TAG_MERGE_FUNCS (float, gfloat)
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list.
*/
-TAG_MERGE_FUNCS (double, gdouble)
+TAG_MERGE_FUNCS (double, gdouble, TRUE)
/**
* gst_tag_list_get_pointer:
* @list: a #GstTagList to get the tag from
@@ -1417,7 +1417,7 @@ TAG_MERGE_FUNCS (double, gdouble)
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list.
*/
-TAG_MERGE_FUNCS (pointer, gpointer)
+TAG_MERGE_FUNCS (pointer, gpointer, (*value != NULL))
#undef COPY_FUNC
#define COPY_FUNC g_strdup
/**
@@ -1454,7 +1454,7 @@ TAG_MERGE_FUNCS (pointer, gpointer)
* Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the
* given list.
*/
-TAG_MERGE_FUNCS (string, gchar *)
+TAG_MERGE_FUNCS (string, gchar *, (*value != NULL && **value != '\0'))
/**
* gst_tag_list_get_date: