(svn r24153) -Fix [FS#5160]: [Squirrel] Crash when trying to create an array with negative size

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
rubidium 12 years ago
parent 8d56856791
commit a355e123fc

@ -210,16 +210,22 @@ static SQInteger base_suspend(HSQUIRRELVM v)
static SQInteger base_array(HSQUIRRELVM v) static SQInteger base_array(HSQUIRRELVM v)
{ {
SQArray *a; SQArray *a;
SQObject &size = stack_get(v,2); SQInteger nInitialSize = tointeger(stack_get(v,2));
SQInteger ret = 1;
if (nInitialSize < 0) {
v->Raise_Error(_SC("can't create/resize array with/to size %d"), nInitialSize);
nInitialSize = 0;
ret = -1;
}
if(sq_gettop(v) > 2) { if(sq_gettop(v) > 2) {
a = SQArray::Create(_ss(v),0); a = SQArray::Create(_ss(v),0);
a->Resize(tointeger(size),stack_get(v,3)); a->Resize(nInitialSize,stack_get(v,3));
} }
else { else {
a = SQArray::Create(_ss(v),tointeger(size)); a = SQArray::Create(_ss(v),nInitialSize);
} }
v->Push(a); v->Push(a);
return 1; return ret;
} }
static SQInteger base_type(HSQUIRRELVM v) static SQInteger base_type(HSQUIRRELVM v)

Loading…
Cancel
Save