summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2010-01-08 13:22:19 -0500
committerMatthias Clasen <mclasen@redhat.com>2010-01-08 13:30:10 -0500
commit30b4352d6250007163c1110a3ba57e36daba8a95 (patch)
treea76e0db71d1d66605e099fe042064f5bd5035f6f
parentee17312399ee02d442de65ec1e069fb8db82b1d6 (diff)
downloadgdk-pixbuf-30b4352d6250007163c1110a3ba57e36daba8a95.tar.gz
Try a little harder to survive close to OOM
(cherry picked from commit d85735a3376e2174fbf91360d82bada841853368)
-rw-r--r--modules/engines/pixbuf/pixbuf-render.c48
1 files changed, 45 insertions, 3 deletions
diff --git a/modules/engines/pixbuf/pixbuf-render.c b/modules/engines/pixbuf/pixbuf-render.c
index f312bacfd..d16e10a6c 100644
--- a/modules/engines/pixbuf/pixbuf-render.c
+++ b/modules/engines/pixbuf/pixbuf-render.c
@@ -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);