on master help sign in
Merge pull request #4411 from jacereda/inbox-error

Bad size in inbox allocation, analyzer warning

commit10a91889a136723b1497f3400d6b456a9281ea74 authorNiklas Larsson <metaniklas@gmail.com> dateMon 9 Apr 2018, 00:43 (9 years ago) parent1a7e2eaaf281ab
1 file changed+5−3
rts/idris_rts.c+5−3
rts/idris_rts.c+5−3
@@ -49,8 +49,9 @@ VM* init_vm(int stack_size, size_t heap_size,
4949 vm->ret = NULL;
5050 vm->reg1 = NULL;
5151#ifdef HAS_PTHREAD
52− vm->inbox = malloc(1024*sizeof(VAL));
53− memset(vm->inbox, 0, 1024*sizeof(VAL));
52+ vm->inbox = malloc(1024*sizeof(vm->inbox[0]));
53+ assert(vm->inbox);
54+ memset(vm->inbox, 0, 1024*sizeof(vm->inbox[0]));
5455 vm->inbox_end = vm->inbox + 1024;
5556 vm->inbox_write = vm->inbox;
5657 vm->inbox_nextid = 1;
@@ -276,7 +277,8 @@ static VAL mkstrlen(VM* vm, const char * str, size_t len, int outer) {
276277 String * cl = allocStr(vm, len, outer);
277278 // hdr.u8 used to mark a null string
278279 cl->hdr.u8 = str == NULL;
279− memcpy(cl->str, str, len);
280+ if (!cl->hdr.u8)
281+ memcpy(cl->str, str, len);
280282 return (VAL)cl;
281283}
282284