Raise error for negative size in array_resize()

Instead of trying to allocate invalid size and most probably crashing with out-of-memory
This commit is contained in:
v.ryabtsev 2017-11-28 23:25:58 +07:00
parent 249a26e829
commit 497c8f9d47

View File

@ -542,9 +542,13 @@ static SQInteger array_resize(HSQUIRRELVM v)
SQObject &nsize = stack_get(v, 2);
SQObjectPtr fill;
if(sq_isnumeric(nsize)) {
SQInteger sz = tointeger(nsize);
if (sz<0)
return sq_throwerror(v, _SC("resizing to negative length"));
if(sq_gettop(v) > 2)
fill = stack_get(v, 3);
_array(o)->Resize(tointeger(nsize),fill);
_array(o)->Resize(sz,fill);
return 0;
}
return sq_throwerror(v, _SC("size must be a number"));