From cc249dcdc22d1a75c56316bc90b709268acd11be Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 3 Feb 2011 06:16:26 -0700 Subject: [PATCH] fix jpeg writing Closes PR 11701 Merge to 5.1 (cherry picked from commit 16eb172e5af019ce8f0aa6563c65f8c06ad7bee8) --- collects/racket/draw/unsafe/jpeg.rkt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/collects/racket/draw/unsafe/jpeg.rkt b/collects/racket/draw/unsafe/jpeg.rkt index 08e7753d1c..9399aec0fc 100644 --- a/collects/racket/draw/unsafe/jpeg.rkt +++ b/collects/racket/draw/unsafe/jpeg.rkt @@ -562,11 +562,13 @@ (define (init-destination m) (void)) -(define (empty-output-buffer m) +(define (do-empty-output-buffer m all?) (let* ([d (jpeg_compress_struct-dest m)] [b (jpeg_destination_mgr-buffer d)] [bstr (scheme_make_sized_byte_string b - (- BUFFER-SIZE (jpeg_destination_mgr-free_in_buffer d)) + (if all? + BUFFER-SIZE + (- BUFFER-SIZE (jpeg_destination_mgr-free_in_buffer d))) 0)] [out (ptr-ref (jpeg_compress_struct-client_data m) _scheme)]) (write-bytes bstr out) @@ -574,8 +576,11 @@ (set-jpeg_destination_mgr-free_in_buffer! d BUFFER-SIZE) #t)) +(define (empty-output-buffer m) + (do-empty-output-buffer m #t)) + (define (term-destination m) - (empty-output-buffer m) + (do-empty-output-buffer m #f) ;; Maybe add support to optionally close port as early as possible? (when #f (let ([in (ptr-ref (jpeg_decompress_struct-client_data m) _scheme)])