--- src-cairo-win32-surface.c.orig 2006-11-06 15:55:18.562500000 +0800 +++ src-cairo-win32-surface.c 2006-11-06 15:48:09.046875000 +0800 @@ -392,20 +392,24 @@ _cairo_win32_surface_create_similar_inte HDC ddb_dc = CreateCompatibleDC (src->dc); HRGN crgn = CreateRectRgn (0, 0, width, height); HBITMAP saved_dc_bitmap; saved_dc_bitmap = SelectObject (ddb_dc, ddb); SelectClipRgn (ddb_dc, crgn); DeleteObject (crgn); new_surf = (cairo_win32_surface_t*) cairo_win32_surface_create (ddb_dc); + if (new_surf == NULL) { + _cairo_error (CAIRO_STATUS_NO_MEMORY); + return NIL_SURFACE; + } new_surf->bitmap = ddb; new_surf->saved_dc_bitmap = saved_dc_bitmap; new_surf->is_dib = FALSE; } return (cairo_surface_t*) new_surf; } static cairo_surface_t * _cairo_win32_surface_create_similar (void *abstract_src,