sidplay: fix compiler warnings when building with -O3
authorJosep Torra <n770galaxy@gmail.com>
Sun, 24 Jul 2016 08:00:48 +0000 (10:00 +0200)
committerJosep Torra <n770galaxy@gmail.com>
Sun, 24 Jul 2016 08:15:48 +0000 (10:15 +0200)
Avoid compiler warnings "‘foo’ may be used uninitialized in this
function" when building with -O3 by checking the return bool value
of format conversion function.

https://bugzilla.gnome.org/show_bug.cgi?id=769116

ext/sidplay/gstsiddec.cc

index 93bf8d7b56190f2468dc43696defd0d56b06da0e..65d25c032b9738ec07912bbe9f59f576cebbba1b 100644 (file)
 /**
  * SECTION:element-siddec
  *
- * This element decodes .sid files to raw audio. .sid files are in fact 
- * small Commodore 64 programs that are executed on an emulated 6502 CPU and a 
+ * This element decodes .sid files to raw audio. .sid files are in fact
+ * small Commodore 64 programs that are executed on an emulated 6502 CPU and a
  * MOS 6581 sound chip.
- * 
+ *
  * This plugin will first load the complete program into memory before starting
  * the emulator and producing output.
- * 
+ *
  * Seeking is not (and cannot be) implemented.
- * 
+ *
  * <refsect2>
  * <title>Example pipelines</title>
  * |[
@@ -394,7 +394,7 @@ play_loop (GstPad * pad)
   GstSidDec *siddec;
   GstBuffer *out;
   GstMapInfo outmap;
-  gint64 value, offset, time;
+  gint64 value, offset, time = 0;
   GstFormat format;
 
   siddec = GST_SIDDEC (gst_pad_get_parent (pad));
@@ -408,29 +408,29 @@ play_loop (GstPad * pad)
 
   /* get offset in samples */
   format = GST_FORMAT_DEFAULT;
-  gst_siddec_src_convert (siddec->srcpad,
-      GST_FORMAT_BYTES, siddec->total_bytes, &format, &offset);
-  GST_BUFFER_OFFSET (out) = offset;
+  if (gst_siddec_src_convert (siddec->srcpad,
+        GST_FORMAT_BYTES, siddec->total_bytes, &format, &offset))
+    GST_BUFFER_OFFSET (out) = offset;
 
   /* get current timestamp */
   format = GST_FORMAT_TIME;
-  gst_siddec_src_convert (siddec->srcpad,
-      GST_FORMAT_BYTES, siddec->total_bytes, &format, &time);
-  GST_BUFFER_TIMESTAMP (out) = time;
+  if (gst_siddec_src_convert (siddec->srcpad,
+        GST_FORMAT_BYTES, siddec->total_bytes, &format, &time))
+    GST_BUFFER_TIMESTAMP (out) = time;
 
   /* update position and get new timestamp to calculate duration */
   siddec->total_bytes += siddec->blocksize;
 
   /* get offset in samples */
   format = GST_FORMAT_DEFAULT;
-  gst_siddec_src_convert (siddec->srcpad,
-      GST_FORMAT_BYTES, siddec->total_bytes, &format, &value);
-  GST_BUFFER_OFFSET_END (out) = value;
+  if (gst_siddec_src_convert (siddec->srcpad,
+        GST_FORMAT_BYTES, siddec->total_bytes, &format, &value))
+    GST_BUFFER_OFFSET_END (out) = value;
 
   format = GST_FORMAT_TIME;
-  gst_siddec_src_convert (siddec->srcpad,
-      GST_FORMAT_BYTES, siddec->total_bytes, &format, &value);
-  GST_BUFFER_DURATION (out) = value - time;
+  if (gst_siddec_src_convert (siddec->srcpad,
+        GST_FORMAT_BYTES, siddec->total_bytes, &format, &value))
+    GST_BUFFER_DURATION (out) = value - time;
 
   if ((ret = gst_pad_push (siddec->srcpad, out)) != GST_FLOW_OK)
     goto pause;