tag: exif: do not include \0 in size passed to g_convert
authorThiago Santos <thiago.sousa.santos@collabora.com>
Thu, 15 Dec 2011 14:01:01 +0000 (11:01 -0300)
committerThiago Santos <thiago.sousa.santos@collabora.com>
Thu, 15 Dec 2011 15:08:51 +0000 (12:08 -0300)
When using g_convert, we should only pass the length
of the string content (without the \0) as g_convert will
only parse the real contents when changing formats. Including
the \0 causes it to add another \0, increasing the string
size when not needed.

For example, when writting a North geo location ref entry, that should
be a string with a single N letter, it would write:
"N\0\0", causing the string to have size 3, instead of 2 as expected.

In our case, we can pass -1 and let g_convert calculate the strlen as
we don't use the length anywhere else.

This fixes jifmux's tests on gst-plugins-bad.

gst-libs/gst/tag/gstexiftag.c

index 448943d..4ad3a13 100644 (file)
@@ -779,16 +779,12 @@ write_exif_undefined_tag (GstExifWriter * writer, guint16 tag,
 static void
 write_exif_ascii_tag (GstExifWriter * writer, guint16 tag, const gchar * str)
 {
-  gint size;
   guint32 offset = 0;
   gchar *ascii_str;
   gsize ascii_size;
   GError *error = NULL;
 
-  size = strlen (str) + 1;
-
-  ascii_str =
-      g_convert (str, size, "latin1", "utf8", NULL, &ascii_size, &error);
+  ascii_str = g_convert (str, -1, "latin1", "utf8", NULL, &ascii_size, &error);
 
   if (error) {
     GST_WARNING ("Failed to convert exif tag to ascii: 0x%x - %s. Error: %s",