[maemo-commits] [maemo-commits] r17356 - in projects/haf/trunk/clutter: clutter/cogl/common clutter/x11 debian

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Wed Feb 4 17:39:27 EET 2009
Author: kihamala
Date: 2009-02-04 17:39:11 +0200 (Wed, 04 Feb 2009)
New Revision: 17356

Modified:
   projects/haf/trunk/clutter/clutter/cogl/common/cogl-bitmap.c
   projects/haf/trunk/clutter/clutter/cogl/common/cogl-pvr-texture.c
   projects/haf/trunk/clutter/clutter/x11/clutter-backend-x11.c
   projects/haf/trunk/clutter/clutter/x11/clutter-x11-texture-pixmap.c
   projects/haf/trunk/clutter/debian/changelog
Log:
plug some Coverity memory leaks and add a NULL check


Modified: projects/haf/trunk/clutter/clutter/cogl/common/cogl-bitmap.c
===================================================================
--- projects/haf/trunk/clutter/clutter/cogl/common/cogl-bitmap.c	2009-02-04 14:35:55 UTC (rev 17355)
+++ projects/haf/trunk/clutter/clutter/cogl/common/cogl-bitmap.c	2009-02-04 15:39:11 UTC (rev 17356)
@@ -198,6 +198,7 @@
   if (!cogl_pvr_texture_save_pvrtc4( filename, compressed, compressed_size,
                                      width, height))
     return FALSE;
-    
+
+  g_free (compressed);
   return TRUE; 
 }

Modified: projects/haf/trunk/clutter/clutter/cogl/common/cogl-pvr-texture.c
===================================================================
--- projects/haf/trunk/clutter/clutter/cogl/common/cogl-pvr-texture.c	2009-02-04 14:35:55 UTC (rev 17355)
+++ projects/haf/trunk/clutter/clutter/cogl/common/cogl-pvr-texture.c	2009-02-04 15:39:11 UTC (rev 17356)
@@ -576,6 +576,7 @@
   if (read_count != sizeof(PVR_TEXTURE_HEADER))
     {
       g_warning("%s: File not large enough for header", __FUNCTION__);
+      fclose (texfile);
       return 0;
     }
   
@@ -585,7 +586,9 @@
       ((header.dwPVR >> 16) & 0xFF) != 'R' &&
       ((header.dwPVR >> 24) & 0xFF) != '!')
     {
-      g_warning("%s: Invalid PVR magic number 0x%08x", __FUNCTION__, header.dwPVR);
+      g_warning("%s: Invalid PVR magic number 0x%08x", __FUNCTION__,
+                header.dwPVR);
+      fclose (texfile);
       return 0;
     }
     
@@ -594,12 +597,16 @@
   if (!texture_data)
     {
       g_warning("%s: Couldn't allocate texture data", __FUNCTION__);
+      fclose (texfile);
       return 0;
     }
   read_count = fread(texture_data, 1, header.dwDataSize, texfile);
   if (read_count != header.dwDataSize)
     {
-      g_warning("%s: File not large enough for image data header describes", __FUNCTION__);
+      g_warning("%s: File not large enough for image data header describes",
+                __FUNCTION__);
+      fclose (texfile);
+      g_free (texture_data);
       return 0;
     }
     
@@ -643,10 +650,9 @@
         gl_format = GL_ETC1_RGB8_OES;
     }
   else
-    g_warning("%s: Unknown PVR file format 0x%02x", __FUNCTION__, header.dwpfFlags&0xFF);
+    g_warning("%s: Unknown PVR file format 0x%02x", __FUNCTION__,
+              header.dwpfFlags & 0xFF);
    
-  
-   
   /* load into GL */
   GE( glEnable(GL_TEXTURE_2D) );
   GE( glGenTextures(1, &tex) );

Modified: projects/haf/trunk/clutter/clutter/x11/clutter-backend-x11.c
===================================================================
--- projects/haf/trunk/clutter/clutter/x11/clutter-backend-x11.c	2009-02-04 14:35:55 UTC (rev 17355)
+++ projects/haf/trunk/clutter/clutter/x11/clutter-backend-x11.c	2009-02-04 15:39:11 UTC (rev 17356)
@@ -664,6 +664,7 @@
       backend_singleton->have_xinput = FALSE;
       return;
     }
+  XFree (ext);
 
   x11b = backend_singleton;
 
@@ -674,6 +675,7 @@
   if (num_devices == 0)
     {
       backend_singleton->have_xinput = FALSE;
+      XFree (xdevices);
       return;
     }
 

Modified: projects/haf/trunk/clutter/clutter/x11/clutter-x11-texture-pixmap.c
===================================================================
--- projects/haf/trunk/clutter/clutter/x11/clutter-x11-texture-pixmap.c	2009-02-04 14:35:55 UTC (rev 17355)
+++ projects/haf/trunk/clutter/clutter/x11/clutter-x11-texture-pixmap.c	2009-02-04 15:39:11 UTC (rev 17356)
@@ -237,6 +237,8 @@
     g_warning ("X Error: Failed to setup XShm");
 
   priv->have_shm = TRUE;
+  if (dummy_image)
+    XFree (dummy_image);
   return TRUE;
 
 failed_xshmattach:
@@ -785,8 +787,11 @@
                                    priv->pixmap_width, priv->pixmap_height,
                                    AllPlanes,
                                    ZPixmap);
-	  first_pixel  = priv->image->data + priv->image->bytes_per_line * y
+          if (priv->image)
+	    first_pixel = priv->image->data + priv->image->bytes_per_line * y
 			  + x * priv->image->bits_per_pixel/8;
+          else
+            g_warning ("%s: XGetImage() failed", __FUNCTION__);
 	}
       else
 	{
@@ -812,7 +817,7 @@
                  priv->pixmap);
       /* safe to assume pixmap has gone away? - therefor reset */
       clutter_x11_texture_pixmap_set_pixmap (texture, None);
-      return;
+      goto free_image_and_return;
     }
 
   if (priv->depth == 24)
@@ -837,7 +842,7 @@
       pixel_has_alpha = TRUE;
     }
   else
-    return;
+    goto free_image_and_return;
 
   /* For debugging purposes, un comment to simply generate dummy
    * pixmap data. (A Green background and Blue cross) */
@@ -898,7 +903,7 @@
   if (data_allocated)
     g_free (data);
 
-
+free_image_and_return:
   if (priv->have_shm)
     XFree (image);
 #if 0

Modified: projects/haf/trunk/clutter/debian/changelog
===================================================================
--- projects/haf/trunk/clutter/debian/changelog	2009-02-04 14:35:55 UTC (rev 17355)
+++ projects/haf/trunk/clutter/debian/changelog	2009-02-04 15:39:11 UTC (rev 17356)
@@ -1,6 +1,17 @@
 clutter (0.8.2-0maemo16~unreleased) unstable; urgency=low
 
-  * unreleased
+  Plugged leaks found by Coverity:
+  * clutter/cogl/common/cogl-bitmap.c (cogl_bitmap_save_pvrtc4): Free
+    pointer 'compressed'.
+  * clutter/cogl/common/cogl-pvr-texture.c (cogl_pvr_texture_load): fclose()
+    'texfile' in case of a return because of an error. Free 'texture_data' in
+    one error return.
+  * clutter/x11/clutter-backend-x11.c (_clutter_x11_register_xinput): Free
+    pointer 'ext' and 'xdevices'.
+  * clutter/x11/clutter-x11-texture-pixmap.c (try_alloc_shm): Free
+    dummy_image.
+    (clutter_x11_texture_pixmap_update_area_real): Added NULL check for
+    an XGetImage call. Free 'image' in case of some error cases.
 
  -- Gordon Williams <gordon.williams at collabora.co.uk>  Tue,  3 Feb 2009 10:33:19 +0200
 


More information about the maemo-commits mailing list