[gtk+/gtk-2-24] Bug 689982: Random Crash
- From: John Ralls <jralls src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-2-24] Bug 689982: Random Crash
- Date: Mon, 10 Dec 2012 17:34:21 +0000 (UTC)
commit e8535149e4b52eb06cfe41eb36d3f127bd81c0b7
Author: John Ralls <jralls ceridwen us>
Date: Mon Dec 10 09:32:00 2012 -0800
Bug 689982: Random Crash
Update Cairo_Win32 error handling to respond correctly to
cairo_win32_foo_create() functions returning a "nil" surface.
gdk/win32/gdkpixmap-win32.c | 14 +++++++++++++-
1 files changed, 13 insertions(+), 1 deletions(-)
---
diff --git a/gdk/win32/gdkpixmap-win32.c b/gdk/win32/gdkpixmap-win32.c
index bb4718c..6d18ca4 100644
--- a/gdk/win32/gdkpixmap-win32.c
+++ b/gdk/win32/gdkpixmap-win32.c
@@ -221,7 +221,8 @@ _gdk_pixmap_new (GdkDrawable *drawable,
if (depth != 15 && depth != 16)
{
dib_surface = cairo_win32_surface_create_with_dib (format, width, height);
- if (dib_surface == NULL)
+ if (dib_surface == NULL ||
+ cairo_surface_status (dib_surface) != CAIRO_STATUS_SUCCESS)
{
g_object_unref ((GObject *) pixmap);
return NULL;
@@ -234,7 +235,18 @@ _gdk_pixmap_new (GdkDrawable *drawable,
/* Get the bitmap from the cairo hdc */
hbitmap = GetCurrentObject (hdc, OBJ_BITMAP);
+ /* Cairo_win32_surface_get_image() returns NULL on failure, but
+ this is likely an oversight and future versions will return a
+ "nil" surface.
+ */
image_surface = cairo_win32_surface_get_image (dib_surface);
+ if (image_surface == NULL ||
+ cairo_surface_status (image_surface) != CAIRO_STATUS_SUCCESS)
+ {
+ cairo_surface_destroy (dib_surface);
+ g_object_unref ((GObject*) pixmap);
+ return NULL;
+ }
bits = cairo_image_surface_get_data (image_surface);
}
else
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]