From 19ce52a1ea2adf41b15158b1912cb6ef98b703df Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Thu, 5 Oct 2006 05:30:50 +0000 Subject: [PATCH] assume put_byte and put_short get numbers in the right range (looks like its ok) svn: r4491 --- collects/mzlib/deflate.ss | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/collects/mzlib/deflate.ss b/collects/mzlib/deflate.ss index b4680c881f..95e0991ec6 100644 --- a/collects/mzlib/deflate.ss +++ b/collects/mzlib/deflate.ss @@ -1952,8 +1952,8 @@ ;; * unused bits in value. ;; */ (if (> bi_valid (- Buf_size length)) - (begin (set! bi_buf (bitwise-ior bi_buf (<< value bi_valid))) - (put_short bi_buf) + (begin (put_short (bitwise-and (bitwise-ior bi_buf (<< value bi_valid)) + #xFFFF)) (set! bi_buf (>> value (- Buf_size bi_valid))) (set! bi_valid (+ bi_valid (- length Buf_size)))) (begin (set! bi_buf (bitwise-ior bi_buf (<< value bi_valid))) @@ -2108,18 +2108,20 @@ len)) +;; Assumes being called with c in 0..FF (define (put_byte c) - (bytes-set! outbuf outcnt (bitwise-and #xFF c)) + (bytes-set! outbuf outcnt c) (set! outcnt (add1 outcnt)) (when (= outcnt OUTBUFSIZ) (flush_outbuf))) ;; /* Output a 16 bit value, lsb first */ +;; Assumes being called with c in 0..FFFF (define (put_short w) (if (< outcnt (- OUTBUFSIZ 2)) (begin (bytes-set! outbuf outcnt (bitwise-and #xFF w)) (bytes-set! outbuf (add1 outcnt) (bitwise-and #xFF (>> w 8))) (set! outcnt (+ outcnt 2))) - (begin (put_byte w) + (begin (put_byte (bitwise-and #xFF w)) (put_byte (>> w 8))))) ;; /* Output a 32 bit value to the bit stream, lsb first */