]> Pileus Git - ~andy/gtk/commitdiff
Try a little harder to survive close to OOM
authorMatthias Clasen <mclasen@redhat.com>
Fri, 8 Jan 2010 18:22:19 +0000 (13:22 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 8 Jan 2010 18:24:33 +0000 (13:24 -0500)
modules/engines/pixbuf/pixbuf-render.c

index f312bacfda6c51669f96fdbc3f58747c442ddf8c..d16e10a6cc270b5bab4bfd90126f2b06bc9908e6 100644 (file)
@@ -45,7 +45,7 @@ bilinear_gradient (GdkPixbuf    *src,
 
   if (src_x == 0 || src_y == 0)
     {
-      g_warning ("invalid source position for bilinear gradient\n");
+      g_warning ("invalid source position for bilinear gradient");
       return NULL;
     }
 
@@ -56,6 +56,13 @@ bilinear_gradient (GdkPixbuf    *src,
 
   result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
                           width, height);
+
+  if (result == NULL)
+    {
+      g_warning ("failed to create a %dx%d pixbuf", width, height);
+      return NULL;
+    }
+
   dest_rowstride = gdk_pixbuf_get_rowstride (result);
   dest_pixels = gdk_pixbuf_get_pixels (result);
 
@@ -104,12 +111,19 @@ horizontal_gradient (GdkPixbuf    *src,
 
   if (src_x == 0)
     {
-      g_warning ("invalid source position for horizontal gradient\n");
+      g_warning ("invalid source position for horizontal gradient");
       return NULL;
     }
 
   result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
                           width, height);
+
+  if (result == NULL)
+    {
+      g_warning ("failed to create a %dx%d pixbuf", width, height);
+      return NULL;
+    }
+
   dest_rowstride = gdk_pixbuf_get_rowstride (result);
   dest_pixels = gdk_pixbuf_get_pixels (result);
 
@@ -159,7 +173,7 @@ vertical_gradient (GdkPixbuf    *src,
 
   if (src_y == 0)
     {
-      g_warning ("invalid source position for vertical gradient\n");
+      g_warning ("invalid source position for vertical gradient");
       return NULL;
     }
 
@@ -168,6 +182,13 @@ vertical_gradient (GdkPixbuf    *src,
 
   result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
                           width, height);
+
+  if (result == NULL)
+    {
+      g_warning ("failed to create a %dx%d pixbuf", width, height);
+      return NULL;
+    }
+
   dest_rowstride = gdk_pixbuf_get_rowstride (result);
   dest_pixels = gdk_pixbuf_get_pixels (result);
 
@@ -209,6 +230,13 @@ replicate_single (GdkPixbuf    *src,
 
   result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
                           width, height);
+
+  if (result == NULL)
+    {
+      g_warning ("failed to create a %dx%d pixbuf", width, height);
+      return NULL;
+    }
+
   dest_rowstride = gdk_pixbuf_get_rowstride (result);
   dest_pixels = gdk_pixbuf_get_pixels (result);
   
@@ -247,6 +275,13 @@ replicate_rows (GdkPixbuf    *src,
 
   result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
                           width, height);
+
+  if (result == NULL)
+    {
+      g_warning ("failed to create a %dx%d pixbuf", width, height);
+      return NULL;
+    }
+
   dest_rowstride = gdk_pixbuf_get_rowstride (result);
   dest_pixels = gdk_pixbuf_get_pixels (result);
 
@@ -273,6 +308,13 @@ replicate_cols (GdkPixbuf    *src,
 
   result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
                           width, height);
+
+  if (result == NULL)
+    {
+      g_warning ("failed to create a %dx%d pixbuf", width, height);
+      return NULL;
+    }
+
   dest_rowstride = gdk_pixbuf_get_rowstride (result);
   dest_pixels = gdk_pixbuf_get_pixels (result);