From 0476ab4fc4b7c7caeb3ec2938a87b33ccca1686a Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 28 Dec 2010 20:03:56 -0700 Subject: [PATCH] guard against bad pre-mult ARGB Closes PR 11572 --- collects/racket/draw/private/bitmap.rkt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/collects/racket/draw/private/bitmap.rkt b/collects/racket/draw/private/bitmap.rkt index f885a6dd81..d1f042a2b0 100644 --- a/collects/racket/draw/private/bitmap.rkt +++ b/collects/racket/draw/private/bitmap.rkt @@ -614,9 +614,13 @@ [a (bytes-ref data (+ ri A))] [unmult (lambda (a v) (if use-alpha? - (if (zero? a) + (if (unsafe-fx= 0 a) 255 - (unsafe-fxquotient (fx* v 255) a)) + ;; `min' shouldn't be necessary, but it's + ;; just in case the data is ill-formed + (unsafe-fxmin 255 (unsafe-fxquotient + (unsafe-fx* v 255) + a))) v))]) (when alpha-channel? (bytes-set! bstr pi a))