Checking for negative values in make-vector.

This commit is contained in:
Alex Shinn 2013-12-30 09:42:12 +09:00
parent 1021344aef
commit a13e30ce7d

2
vm.c
View file

@ -1456,6 +1456,8 @@ sexp sexp_apply (sexp ctx, sexp proc, sexp args) {
sexp_context_top(ctx) = top; sexp_context_top(ctx) = top;
if (! sexp_fixnump(_ARG1)) if (! sexp_fixnump(_ARG1))
sexp_raise("make-vector: not an integer", sexp_list1(ctx, _ARG1)); sexp_raise("make-vector: not an integer", sexp_list1(ctx, _ARG1));
if (sexp_unbox_fixnum(_ARG1) < 0)
sexp_raise("make-vector: length must be non-negative", sexp_list1(ctx, _ARG1));
_ARG2 = sexp_make_vector(ctx, _ARG1, _ARG2); _ARG2 = sexp_make_vector(ctx, _ARG1, _ARG2);
top--; top--;
break; break;