History

Disable access to deleteLater in ScriptEngine

Ryan Huffman committed 9 years ago

Commit 4df93021 parent 5629db91 file · +8 −5Browse files

Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 1 file). Show all

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+8−5
@@ -66,6 +66,7 @@ · 65 unmodified lines
6666 #include "MIDIEvent.h"
6767
6868 static const QString SCRIPT_EXCEPTION_FORMAT = "[UncaughtException] %1 in %2:%3";
69+static const QScriptEngine::QObjectWrapOptions DEFAULT_QOBJECT_WRAP_OPTIONS = 0;
6970
7071 Q_DECLARE_METATYPE(QScriptEngine::FunctionSignature)
7172 int functionSignatureMetaID = qRegisterMetaType<QScriptEngine::FunctionSignature>();
@@ -90,7 +91,7 @@ static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine){ · 18 unmodified lines
9091 }
9192
9293 QScriptValue avatarDataToScriptValue(QScriptEngine* engine, AvatarData* const &in) {
93− return engine->newQObject(in);
94+ return engine->newQObject(in, QScriptEngine::QtOwnership, DEFAULT_QOBJECT_WRAP_OPTIONS);
9495 }
9596
9697 void avatarDataFromScriptValue(const QScriptValue &object, AvatarData* &out) {
@@ -101,7 +102,7 @@ Q_DECLARE_METATYPE(controller::InputController*) · 4 unmodified lines
101102 //static int inputControllerPointerId = qRegisterMetaType<controller::InputController*>();
102103
103104 QScriptValue inputControllerToScriptValue(QScriptEngine *engine, controller::InputController* const &in) {
104− return engine->newQObject(in);
105+ return engine->newQObject(in, QScriptEngine::QtOwnership, DEFAULT_QOBJECT_WRAP_OPTIONS);
105106 }
106107
107108 void inputControllerFromScriptValue(const QScriptValue &object, controller::InputController* &out) {
@@ -440,7 +441,8 @@ static QScriptValue scriptableResourceToScriptValue(QScriptEngine* engine, const · 332 unmodified lines
440441
441442 auto object = engine->newQObject(
442443 const_cast<ScriptableResourceRawPtr>(resource),
443− QScriptEngine::ScriptOwnership);
444+ QScriptEngine::ScriptOwnership,
445+ DEFAULT_QOBJECT_WRAP_OPTIONS);
444446 return object;
445447 }
446448
@@ -459,7 +461,8 @@ static QScriptValue createScriptableResourcePrototype(QScriptEngine* engine) { · 12 unmodified lines
459461 state->setProperty(metaEnum.key(i), metaEnum.value(i));
460462 }
461463
462− auto prototypeState = engine->newQObject(state, QScriptEngine::QtOwnership, QScriptEngine::ExcludeSlots | QScriptEngine::ExcludeSuperClassMethods);
464+ auto prototypeState = engine->newQObject(state, QScriptEngine::QtOwnership,
465+ QScriptEngine::ExcludeDeleteLater | QScriptEngine::ExcludeSlots | QScriptEngine::ExcludeSuperClassMethods);
463466 prototype.setProperty("State", prototypeState);
464467
465468 return prototype;
@@ -592,7 +595,7 @@ void ScriptEngine::registerGlobalObject(const QString& name, QObject* object) { · 126 unmodified lines
592595
593596 if (!globalObject().property(name).isValid()) {
594597 if (object) {
595− QScriptValue value = newQObject(object);
598+ QScriptValue value = newQObject(object, QScriptEngine::QtOwnership, DEFAULT_QOBJECT_WRAP_OPTIONS);
596599 globalObject().setProperty(name, value);
597600 } else {
598601 globalObject().setProperty(name, QScriptValue());