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:
parent
249a26e829
commit
497c8f9d47
@ -542,9 +542,13 @@ static SQInteger array_resize(HSQUIRRELVM v)
|
|||||||
SQObject &nsize = stack_get(v, 2);
|
SQObject &nsize = stack_get(v, 2);
|
||||||
SQObjectPtr fill;
|
SQObjectPtr fill;
|
||||||
if(sq_isnumeric(nsize)) {
|
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)
|
if(sq_gettop(v) > 2)
|
||||||
fill = stack_get(v, 3);
|
fill = stack_get(v, 3);
|
||||||
_array(o)->Resize(tointeger(nsize),fill);
|
_array(o)->Resize(sz,fill);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return sq_throwerror(v, _SC("size must be a number"));
|
return sq_throwerror(v, _SC("size must be a number"));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user