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
66#include "MIDIEvent.h"66#include "MIDIEvent.h"
67 67
68static const QString SCRIPT_EXCEPTION_FORMAT = "[UncaughtException] %1 in %2:%3";68static const QString SCRIPT_EXCEPTION_FORMAT = "[UncaughtException] %1 in %2:%3";
69static const QScriptEngine::QObjectWrapOptions DEFAULT_QOBJECT_WRAP_OPTIONS = 0;
69 70
70Q_DECLARE_METATYPE(QScriptEngine::FunctionSignature)71Q_DECLARE_METATYPE(QScriptEngine::FunctionSignature)
71int functionSignatureMetaID = qRegisterMetaType<QScriptEngine::FunctionSignature>();72int functionSignatureMetaID = qRegisterMetaType<QScriptEngine::FunctionSignature>();
@@ -90,7 +91,7 @@ static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine){ · 18 unmodified lines
90}91}
91 92
92QScriptValue avatarDataToScriptValue(QScriptEngine* engine, AvatarData* const &in) {93QScriptValue avatarDataToScriptValue(QScriptEngine* engine, AvatarData* const &in) {
93 return engine->newQObject(in);94 return engine->newQObject(in, QScriptEngine::QtOwnership, DEFAULT_QOBJECT_WRAP_OPTIONS);
94}95}
95 96
96void avatarDataFromScriptValue(const QScriptValue &object, AvatarData* &out) {97void avatarDataFromScriptValue(const QScriptValue &object, AvatarData* &out) {
@@ -101,7 +102,7 @@ Q_DECLARE_METATYPE(controller::InputController*) · 4 unmodified lines
101//static int inputControllerPointerId = qRegisterMetaType<controller::InputController*>();102//static int inputControllerPointerId = qRegisterMetaType<controller::InputController*>();
102 103
103QScriptValue inputControllerToScriptValue(QScriptEngine *engine, controller::InputController* const &in) {104QScriptValue inputControllerToScriptValue(QScriptEngine *engine, controller::InputController* const &in) {
104 return engine->newQObject(in);105 return engine->newQObject(in, QScriptEngine::QtOwnership, DEFAULT_QOBJECT_WRAP_OPTIONS);
105}106}
106 107
107void inputControllerFromScriptValue(const QScriptValue &object, controller::InputController* &out) {108void inputControllerFromScriptValue(const QScriptValue &object, controller::InputController* &out) {
@@ -440,7 +441,8 @@ static QScriptValue scriptableResourceToScriptValue(QScriptEngine* engine, const · 332 unmodified lines
440 441
441 auto object = engine->newQObject(442 auto object = engine->newQObject(
442 const_cast<ScriptableResourceRawPtr>(resource),443 const_cast<ScriptableResourceRawPtr>(resource),
443 QScriptEngine::ScriptOwnership);444 QScriptEngine::ScriptOwnership,
445 DEFAULT_QOBJECT_WRAP_OPTIONS);
444 return object;446 return object;
445}447}
446 448
@@ -459,7 +461,8 @@ static QScriptValue createScriptableResourcePrototype(QScriptEngine* engine) { · 12 unmodified lines
459 state->setProperty(metaEnum.key(i), metaEnum.value(i));461 state->setProperty(metaEnum.key(i), metaEnum.value(i));
460 }462 }
461 463
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);
463 prototype.setProperty("State", prototypeState);466 prototype.setProperty("State", prototypeState);
464 467
465 return prototype;468 return prototype;
@@ -592,7 +595,7 @@ void ScriptEngine::registerGlobalObject(const QString& name, QObject* object) { · 126 unmodified lines
592 595
593 if (!globalObject().property(name).isValid()) {596 if (!globalObject().property(name).isValid()) {
594 if (object) {597 if (object) {
595 QScriptValue value = newQObject(object);598 QScriptValue value = newQObject(object, QScriptEngine::QtOwnership, DEFAULT_QOBJECT_WRAP_OPTIONS);
596 globalObject().setProperty(name, value);599 globalObject().setProperty(name, value);
597 } else {600 } else {
598 globalObject().setProperty(name, QScriptValue());601 globalObject().setProperty(name, QScriptValue());