зеркало из https://github.com/mozilla/gecko-dev.git
b=555807; typed array native constructor fix; r=jorendorff
This commit is contained in:
Родитель
a1a894fc1c
Коммит
de52f61320
|
@ -1397,7 +1397,8 @@ JS_FRIEND_API(JSObject *)
|
||||||
js_CreateArrayBuffer(JSContext *cx, jsuint nbytes)
|
js_CreateArrayBuffer(JSContext *cx, jsuint nbytes)
|
||||||
{
|
{
|
||||||
AutoValueRooter tvr(cx);
|
AutoValueRooter tvr(cx);
|
||||||
js_NewNumberInRootedValue(cx, jsdouble(nbytes), tvr.addr());
|
if (!js_NewNumberInRootedValue(cx, jsdouble(nbytes), tvr.addr()))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
AutoValueRooter rval(cx);
|
AutoValueRooter rval(cx);
|
||||||
if (!ArrayBuffer::class_constructor(cx, cx->globalObject,
|
if (!ArrayBuffer::class_constructor(cx, cx->globalObject,
|
||||||
|
@ -1484,8 +1485,7 @@ js_CreateTypedArrayWithBuffer(JSContext *cx, jsint atype, JSObject *bufArg,
|
||||||
{
|
{
|
||||||
JS_ASSERT(atype >= 0 && atype < TypedArray::TYPE_MAX);
|
JS_ASSERT(atype >= 0 && atype < TypedArray::TYPE_MAX);
|
||||||
JS_ASSERT(bufArg && ArrayBuffer::fromJSObject(bufArg));
|
JS_ASSERT(bufArg && ArrayBuffer::fromJSObject(bufArg));
|
||||||
/* if byteoffset is -1, length must be -1 */
|
JS_ASSERT_IF(byteoffset < 0, length < 0);
|
||||||
JS_ASSERT(length < 0 || byteoffset >= 0);
|
|
||||||
|
|
||||||
jsval vals[4];
|
jsval vals[4];
|
||||||
AutoArrayRooter tvr(cx, JS_ARRAY_LENGTH(vals), vals);
|
AutoArrayRooter tvr(cx, JS_ARRAY_LENGTH(vals), vals);
|
||||||
|
@ -1494,17 +1494,19 @@ js_CreateTypedArrayWithBuffer(JSContext *cx, jsint atype, JSObject *bufArg,
|
||||||
vals[0] = OBJECT_TO_JSVAL(bufArg);
|
vals[0] = OBJECT_TO_JSVAL(bufArg);
|
||||||
|
|
||||||
if (byteoffset >= 0) {
|
if (byteoffset >= 0) {
|
||||||
js_NewNumberInRootedValue(cx, jsdouble(byteoffset), &vals[1]);
|
if (!js_NewNumberInRootedValue(cx, jsdouble(byteoffset), &vals[argc]))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
argc++;
|
argc++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (length >= 0) {
|
if (length >= 0) {
|
||||||
js_NewNumberInRootedValue(cx, jsdouble(length), &vals[1]);
|
if (!js_NewNumberInRootedValue(cx, jsdouble(length), &vals[argc]))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
argc++;
|
argc++;
|
||||||
}
|
}
|
||||||
|
|
||||||
js_NewNumberInRootedValue(cx, jsdouble(byteoffset), &vals[0]);
|
|
||||||
|
|
||||||
if (!TypedArrayConstruct(cx, atype, argc, &vals[0], &vals[3]))
|
if (!TypedArrayConstruct(cx, atype, argc, &vals[0], &vals[3]))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче