Showing the changes to libraries/script-engine/src/ArrayBufferClass.cpp (1 of 7 files). Show all
Unified · Split
| @@ -48,7 +48,17 @@ _scriptEngine(scriptEngine) { · 47 unmodified lines | |||
| 48 | engine()->globalObject().setProperty(name(), _ctor); | 48 | engine()->globalObject().setProperty(name(), _ctor); |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 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 | |||
| 52 | engine()->reportAdditionalMemoryCost(size); | 62 | engine()->reportAdditionalMemoryCost(size); |
| 53 | QScriptEngine* eng = engine(); | 63 | QScriptEngine* eng = engine(); |
| 54 | QVariant variant = QVariant::fromValue(QByteArray(size, 0)); | 64 | QVariant variant = QVariant::fromValue(QByteArray(size, 0)); |