From: Tim-Philipp Müller Date: Sun, 31 May 2009 15:17:45 +0000 (+0100) Subject: taglists: make _get_{string|pointer} return FALSE for NULL values X-Git-Tag: RELEASE-0.10.24~192 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7c4e618471eb4218785d5891da46b67de952397e;p=platform%2Fupstream%2Fgstreamer.git 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. --- 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: