id3mux: glib doesn't reliably null-terminate wide-character encodings in
authorMichael Smith <msmith@songbirdnest.com>
Tue, 27 Oct 2009 21:31:39 +0000 (14:31 -0700)
committerMichael Smith <msmith@songbirdnest.com>
Tue, 27 Oct 2009 21:32:30 +0000 (14:32 -0700)
g_convert, so write the null-terminator separately and explicitly.

gst/id3tag/id3tag.c

index 07633343ad59e647ece5ee2758df36f1ef1ad9a9..899bd4be228d613d25c5fe346a809ae11dc818f2 100644 (file)
@@ -374,10 +374,11 @@ id3v2_frame_write_string (GstId3v2Frame * frame, int encoding,
 
     /* Write the BOM */
     id3v2_frame_write_bytes (frame, (const guint8 *) bom, 2);
-    /* NUL terminator is 2 bytes, if present */
-    terminator_length = null_terminate ? 2 : 0;
-    id3v2_frame_write_bytes (frame, (const guint8 *) utf16,
-        utf16len + terminator_length);
+    id3v2_frame_write_bytes (frame, (const guint8 *) utf16, utf16len);
+    if (null_terminate) {
+      /* NUL terminator is 2 bytes, if present. */
+      id3v2_frame_write_uint16 (frame, 0);
+    }
 
     g_free (utf16);
   } else {