qtmux: do not add size to the pointer variable
authorThiago Sousa Santos <thiagoss@redmoon.(none)>
Mon, 16 Nov 2009 17:57:53 +0000 (14:57 -0300)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Tue, 12 Apr 2011 19:32:13 +0000 (20:32 +0100)
Do not wrongly add the result of the function to the
pointer to the buffer size. Instead, check the result
to see if the serialization was ok.

Based on a patch by: "Carsten Kroll <car@ximidi.com>"

Fixes #602106

gst/quicktime/atoms.c

index a0844c2..57b9aa4 100644 (file)
@@ -1909,11 +1909,15 @@ atom_stsd_copy_data (AtomSTSD * stsd, guint8 ** buffer, guint64 * size,
         break;
       default:
         if (se->kind == VIDEO) {
-          size += sample_entry_mp4v_copy_data ((SampleTableEntryMP4V *)
-              walker->data, buffer, size, offset);
+          if (!sample_entry_mp4v_copy_data ((SampleTableEntryMP4V *)
+                  walker->data, buffer, size, offset)) {
+            return 0;
+          }
         } else if (se->kind == AUDIO) {
-          size += sample_entry_mp4a_copy_data ((SampleTableEntryMP4A *)
-              walker->data, buffer, size, offset);
+          if (!sample_entry_mp4a_copy_data ((SampleTableEntryMP4A *)
+                  walker->data, buffer, size, offset)) {
+            return 0;
+          }
         } else {
           if (!atom_hint_sample_entry_copy_data (
                   (AtomHintSampleEntry *) walker->data, buffer, size, offset)) {