diff options
author | Matthias Clasen <mclasen@redhat.com> | 2010-01-08 13:22:19 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2010-01-08 13:30:10 -0500 |
commit | 30b4352d6250007163c1110a3ba57e36daba8a95 (patch) | |
tree | a76e0db71d1d66605e099fe042064f5bd5035f6f | |
parent | ee17312399ee02d442de65ec1e069fb8db82b1d6 (diff) | |
download | gdk-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.c | 48 |
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); |