ximage: Initialize all fields in the meta explicitly
authorSebastian Dröge <sebastian@centricular.com>
Wed, 13 Apr 2016 06:57:16 +0000 (09:57 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 13 Apr 2016 06:57:16 +0000 (09:57 +0300)
The meta is not allocated with all fields initialized to zeroes.

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

sys/ximage/ximageutil.c

index ac2fd49f0c3483aeded1bdf597392ac0559c8084..d1c1fd357e1c77549e443cb6240a42688828199a 100644 (file)
@@ -36,6 +36,24 @@ gst_meta_ximage_api_get_type (void)
   return type;
 }
 
+static gboolean
+gst_meta_ximage_init (GstMeta * meta, gpointer params, GstBuffer * buffer)
+{
+  GstMetaXImage *emeta = (GstMetaXImage *) meta;
+
+  emeta->parent = NULL;
+  emeta->ximage = NULL;
+#ifdef HAVE_XSHM
+  emeta->SHMInfo.shmaddr = ((void *) -1);
+  emeta->SHMInfo.shmid = -1;
+  emeta->SHMInfo.readOnly = TRUE;
+#endif
+  emeta->width = emeta->height = emeta->size = 0;
+  emeta->return_func = NULL;
+
+  return TRUE;
+}
+
 static gboolean
 gst_meta_ximage_transform (GstBuffer * dest, GstMeta * meta,
     GstBuffer * buffer, GQuark type, gpointer data)
@@ -53,7 +71,7 @@ gst_meta_ximage_get_info (void)
   if (g_once_init_enter (&meta_ximage_info)) {
     const GstMetaInfo *meta =
         gst_meta_register (gst_meta_ximage_api_get_type (), "GstMetaXImageSrc",
-        sizeof (GstMetaXImage), (GstMetaInitFunction) NULL,
+        sizeof (GstMetaXImage), (GstMetaInitFunction) gst_meta_ximage_init,
         (GstMetaFreeFunction) NULL, gst_meta_ximage_transform);
     g_once_init_leave (&meta_ximage_info, meta);
   }