diff --git a/collects/tests/racket/basic.rktl b/collects/tests/racket/basic.rktl index 5ac141d741..4ad4079938 100644 --- a/collects/tests/racket/basic.rktl +++ b/collects/tests/racket/basic.rktl @@ -657,6 +657,7 @@ (unless 64-bit-machine? (err/rt-test (make-vector 1234567890 #\f) exn:fail:out-of-memory?) (err/rt-test (read (open-input-string "#1234567890(0)")) exn:fail:out-of-memory?)) +(test #t vector? (make-vector 0)) (define f (make-string 3 #\*)) (test "?**" 'string-set! (begin (string-set! f 0 #\?) f)) diff --git a/src/racket/src/vector.c b/src/racket/src/vector.c index a5c3bb42fb..6b28724bc4 100644 --- a/src/racket/src/vector.c +++ b/src/racket/src/vector.c @@ -235,7 +235,7 @@ scheme_init_unsafe_vector (Scheme_Env *env) } #define VECTOR_BYTES(size) (sizeof(Scheme_Vector) + ((size) - 1) * sizeof(Scheme_Object *)) -#define REV_VECTOR_BYTES(size) (((size - sizeof(Scheme_Vector)) / sizeof(Scheme_Object *)) + 1) +#define REV_VECTOR_BYTES(size) (((size) - (sizeof(Scheme_Vector) - sizeof(Scheme_Object *))) / sizeof(Scheme_Object *)) Scheme_Object * scheme_make_vector (intptr_t size, Scheme_Object *fill)