History

Added JS exceptions + fixed up floating precision mess up

Atlante45 committed 12 years ago

Commit b9fe5b21 parent d456adf7 files · +105 −52Browse files

Showing the changes to libraries/script-engine/src/ArrayBufferClass.cpp (1 of 7 files). Show all

Unified · Split

libraries/script-engine/src/ArrayBufferClass.cpp+11−1
@@ -48,7 +48,17 @@ _scriptEngine(scriptEngine) { · 47 unmodified lines
4848 engine()->globalObject().setProperty(name(), _ctor);
4949 }
5050
51−QScriptValue ArrayBufferClass::newInstance(quint32 size) {
51+QScriptValue ArrayBufferClass::newInstance(qint32 size) {
52+ const qint32 MAX_LENGTH = 100000000;
53+ if (size < 0) {
54+ engine()->evaluate("throw \"ArgumentError: negative length\"");
55+ return QScriptValue();
56+ }
57+ if (size > MAX_LENGTH) {
58+ engine()->evaluate("throw \"ArgumentError: absurd length\"");
59+ return QScriptValue();
60+ }
61+
5262 engine()->reportAdditionalMemoryCost(size);
5363 QScriptEngine* eng = engine();
5464 QVariant variant = QVariant::fromValue(QByteArray(size, 0));