From b7654d9a845e9571fb6deb2a0de450e4cdbb5fc7 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 21 Feb 2019 08:35:01 -0700 Subject: [PATCH] cs: avoid uninitialized bytevectors via `ffi/unsafe` Zeroing out allocated memory is required by the specification of `alloc` from `ffi/unsafe`. Possibly relevant to #2493 --- racket/src/cs/rumble/foreign.ss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/racket/src/cs/rumble/foreign.ss b/racket/src/cs/rumble/foreign.ss index 197e0a180f..29f295e084 100644 --- a/racket/src/cs/rumble/foreign.ss +++ b/racket/src/cs/rumble/foreign.ss @@ -137,7 +137,7 @@ (foreign-procedure "(cs)fxmul" (u8* uptr) uptr)) - (let* ([s (make-bytevector 1)] + (let* ([s (make-bytevector 1 0)] [offset ;; Disable interrupts to avoid a GC: (with-interrupts-disabled @@ -1336,7 +1336,7 @@ [(eq? mode 'raw) (make-cpointer (foreign-alloc size) #f)] [(eq? mode 'atomic) - (make-cpointer (make-bytevector size) #f)] + (make-cpointer (make-bytevector size 0) #f)] [(eq? mode 'nonatomic) (make-cpointer (#%make-vector (quotient size 8) 0) #f)] [(eq? mode 'atomic-interior) @@ -1344,7 +1344,7 @@ ;; a finalizer is associated with the cpointer (as opposed to ;; the address that is wrapped by the cpointer). Also, interior ;; pointers are not allowed as GCable pointers. - (let* ([bstr (make-bytevector size)] + (let* ([bstr (make-bytevector size 0)] [p (make-cpointer bstr #f)]) (lock-object bstr) (with-global-lock (the-foreign-guardian p (lambda () (unlock-object bstr))))