[ChangeLog][QtQml] Fix JavaScript Array.pop() not updating the internal array length correctly
While the length property was reporting the correct value, the internal array length was out-of-sync. Task-number: QTBUG-35979 Change-Id: I68820a349cf1ce88c6aabc6a2301a8a861018a10 Reviewed-by: Liang Qi <liang.qi@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This commit is contained in:
parent
f03de5497d
commit
7e115c5c5e
|
@ -276,7 +276,7 @@ ReturnedValue ArrayPrototype::method_pop(CallContext *ctx)
|
||||||
if (scope.hasException())
|
if (scope.hasException())
|
||||||
return Encode::undefined();
|
return Encode::undefined();
|
||||||
if (instance->isArrayObject())
|
if (instance->isArrayObject())
|
||||||
instance->setArrayLengthUnchecked(len - 1);
|
instance->setArrayLength(len - 1);
|
||||||
else
|
else
|
||||||
instance->put(ctx->engine->id_length, ScopedValue(scope, Primitive::fromDouble(len - 1)));
|
instance->put(ctx->engine->id_length, ScopedValue(scope, Primitive::fromDouble(len - 1)));
|
||||||
return result.asReturnedValue();
|
return result.asReturnedValue();
|
||||||
|
|
|
@ -146,6 +146,8 @@ private slots:
|
||||||
void threadedEngine();
|
void threadedEngine();
|
||||||
|
|
||||||
void functionDeclarationsInConditionals();
|
void functionDeclarationsInConditionals();
|
||||||
|
|
||||||
|
void arrayPop_QTBUG_35979();
|
||||||
};
|
};
|
||||||
|
|
||||||
tst_QJSEngine::tst_QJSEngine()
|
tst_QJSEngine::tst_QJSEngine()
|
||||||
|
@ -2692,6 +2694,17 @@ void tst_QJSEngine::functionDeclarationsInConditionals()
|
||||||
QCOMPARE(result.toBool(), true);
|
QCOMPARE(result.toBool(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tst_QJSEngine::arrayPop_QTBUG_35979()
|
||||||
|
{
|
||||||
|
QJSEngine eng;
|
||||||
|
QJSValue result = eng.evaluate(""
|
||||||
|
"var x = [1, 2]\n"
|
||||||
|
"x.pop()\n"
|
||||||
|
"x[1] = 3\n"
|
||||||
|
"x.toString()\n");
|
||||||
|
QCOMPARE(result.toString(), QString("1,3"));
|
||||||
|
}
|
||||||
|
|
||||||
QTEST_MAIN(tst_QJSEngine)
|
QTEST_MAIN(tst_QJSEngine)
|
||||||
|
|
||||||
#include "tst_qjsengine.moc"
|
#include "tst_qjsengine.moc"
|
||||||
|
|
Loading…
Reference in New Issue