From ce4f41bc722d521b955f20a1a3982c1dae8449df Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 24 Nov 2014 13:13:18 -0700 Subject: [PATCH] racket/draw: fix `ok?` result for too-large bitmap creation Use cairo_surface_status() to check whether creation succeeded. --- pkgs/draw-pkgs/draw-lib/racket/draw/private/bitmap.rkt | 2 ++ pkgs/draw-pkgs/draw-lib/racket/draw/unsafe/cairo.rkt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/pkgs/draw-pkgs/draw-lib/racket/draw/private/bitmap.rkt b/pkgs/draw-pkgs/draw-lib/racket/draw/private/bitmap.rkt index df0c728c16..44913d4384 100644 --- a/pkgs/draw-pkgs/draw-lib/racket/draw/private/bitmap.rkt +++ b/pkgs/draw-pkgs/draw-lib/racket/draw/private/bitmap.rkt @@ -201,6 +201,8 @@ (max (*i scale h) 1))]) (cairo_surface_flush s) (cond + [(not (zero? (cairo_surface_status s))) + #f] [(cairo_image_surface_get_data s) (cond [b&w? diff --git a/pkgs/draw-pkgs/draw-lib/racket/draw/unsafe/cairo.rkt b/pkgs/draw-pkgs/draw-lib/racket/draw/unsafe/cairo.rkt index ed46c92f5b..d26f08f543 100644 --- a/pkgs/draw-pkgs/draw-lib/racket/draw/unsafe/cairo.rkt +++ b/pkgs/draw-pkgs/draw-lib/racket/draw/unsafe/cairo.rkt @@ -109,6 +109,8 @@ (define-cairo cairo_get_target (_cfun _cairo_t -> _cairo_surface_t)) ;; not an allocator +(define-cairo cairo_surface_status (_cfun _cairo_surface_t -> _int)) + (define-cairo cairo_surface_get_type (_cfun _cairo_surface_t -> _int)) ;; Context