geometrictransform: Prevent access to the transform map when it is null
authorThiago Santos <thiago.sousa.santos@collabora.com>
Tue, 20 Mar 2012 23:07:11 +0000 (20:07 -0300)
committerThiago Santos <thiago.sousa.santos@collabora.com>
Tue, 20 Mar 2012 23:11:30 +0000 (20:11 -0300)
Check if the map doesn't exist when receiving a new caps and create
a new one. This prevents that the transform functions try to access
the map when it doesn't exist.

gst/geometrictransform/gstgeometrictransform.c

index be651a4..a1ec3ab 100644 (file)
@@ -178,8 +178,8 @@ gst_geometric_transform_set_caps (GstBaseTransform * btrans, GstCaps * incaps,
 
     /* regenerate the map */
     GST_OBJECT_LOCK (gt);
-    if (old_width == 0 || old_height == 0 || gt->width != old_width ||
-        gt->height != old_height) {
+    if (gt->map == NULL || old_width == 0 || old_height == 0
+        || gt->width != old_width || gt->height != old_height) {
       if (klass->prepare_func)
         if (!klass->prepare_func (gt)) {
           GST_OBJECT_UNLOCK (gt);
@@ -352,6 +352,10 @@ gst_geometric_transform_stop (GstBaseTransform * trans)
   GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM_CAST (trans);
 
   GST_INFO_OBJECT (gt, "Deleting transform map");
+
+  gt->width = 0;
+  gt->height = 0;
+
   g_free (gt->map);
   gt->map = NULL;