diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-09-16 22:02:27 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-22 01:06:20 +0200 |
commit | e441692b0b8f8fffdfdfa8a21c570adcd5cbae7a (patch) | |
tree | 9b764401d87682012328c46dc947721f47b428b2 /src/qml/jsruntime/qv4numberobject.cpp | |
parent | a0f8be4021caa9bb5055923f0eea3bee0e345235 (diff) |
Further work towards an exact GC
Add some more convenience in the helper classes
in qscopedvalue_p.h
Make accesses to CallData safer, and change
ExecutionEngine::newObject() to return a safe
pointer.
Change-Id: I980909754ce9681cf6faa1355bab3a1e5d6dd186
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4numberobject.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4numberobject.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/qml/jsruntime/qv4numberobject.cpp b/src/qml/jsruntime/qv4numberobject.cpp index 3702428553..b9b64cf534 100644 --- a/src/qml/jsruntime/qv4numberobject.cpp +++ b/src/qml/jsruntime/qv4numberobject.cpp @@ -110,9 +110,8 @@ ReturnedValue NumberPrototype::method_toString(SimpleCallContext *ctx) { double num = thisNumberValue(ctx).asDouble(); - Value arg = ctx->argument(0); - if (!arg.isUndefined()) { - int radix = arg.toInt32(); + if (ctx->argumentCount && !ctx->arguments[0].isUndefined()) { + int radix = ctx->arguments[0].toInt32(); if (radix < 2 || radix > 36) { ctx->throwError(QString::fromLatin1("Number.prototype.toString: %0 is not a valid radix") .arg(radix)); @@ -180,7 +179,7 @@ ReturnedValue NumberPrototype::method_toFixed(SimpleCallContext *ctx) double fdigits = 0; if (ctx->argumentCount > 0) - fdigits = ctx->argument(0).toInteger(); + fdigits = ctx->arguments[0].toInteger(); if (std::isnan(fdigits)) fdigits = 0; @@ -204,11 +203,10 @@ ReturnedValue NumberPrototype::method_toExponential(SimpleCallContext *ctx) { double d = thisNumberValue(ctx).asDouble(); - Value fraction = ctx->argument(0); int fdigits = -1; - if (!fraction.isUndefined()) { - int fdigits = ctx->argument(0).toInt32(); + if (ctx->argumentCount && !ctx->arguments[0].isUndefined()) { + int fdigits = ctx->arguments[0].toInt32(); if (fdigits < 0 || fdigits > 20) { String *error = ctx->engine->newString(QStringLiteral("Number.prototype.toExponential: fractionDigits out of range")); ctx->throwRangeError(Value::fromString(error)); @@ -229,11 +227,10 @@ ReturnedValue NumberPrototype::method_toPrecision(SimpleCallContext *ctx) ScopedValue v(scope, thisNumberValue(ctx)); - Value prec = ctx->argument(0); - if (prec.isUndefined()) + if (!ctx->argumentCount || ctx->arguments[0].isUndefined()) return __qmljs_to_string(v, ctx); - double precision = prec.toInt32(); + double precision = ctx->arguments[0].toInt32(); if (precision < 1 || precision > 21) { String *error = ctx->engine->newString(QStringLiteral("Number.prototype.toPrecision: precision out of range")); ctx->throwRangeError(Value::fromString(error)); |