diff options
author | Ivan Komissarov <abbapoh@gmail.com> | 2024-01-09 00:08:03 +0300 |
---|---|---|
committer | Ivan Komissarov <abbapoh@gmail.com> | 2024-01-09 00:08:10 +0300 |
commit | 9d173c3628af6e099c525190ffcb8e2e213a1916 (patch) | |
tree | 389ce70af936fdd88daf6ee596455b68cf7926ef /src/lib/corelib | |
parent | efb1f863dbafa0d04e185bc10d3156b15bb23b3d (diff) | |
parent | 48d4351977c330a97d8d6929146ee39e77ab0f47 (diff) |
Merge branch '2.2' into master
Change-Id: I03789600e30aaa8d01d56777f08319d78813a260
Diffstat (limited to 'src/lib/corelib')
-rw-r--r-- | src/lib/corelib/language/evaluator.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/lib/corelib/language/evaluator.cpp b/src/lib/corelib/language/evaluator.cpp index ef9376194..084f2f4a9 100644 --- a/src/lib/corelib/language/evaluator.cpp +++ b/src/lib/corelib/language/evaluator.cpp @@ -77,13 +77,15 @@ static int getEvalPropertyNames(JSContext *ctx, JSPropertyEnum **ptab, uint32_t JSValueConst obj); static int getEvalProperty(JSContext *ctx, JSPropertyDescriptor *desc, JSValueConst obj, JSAtom prop); +static int getEvalPropertySafe(JSContext *ctx, JSPropertyDescriptor *desc, + JSValueConst obj, JSAtom prop); static bool debugProperties = false; Evaluator::Evaluator(ScriptEngine *scriptEngine) : m_scriptEngine(scriptEngine) , m_scriptClass(scriptEngine->registerClass("Evaluator", nullptr, nullptr, JS_UNDEFINED, - getEvalPropertyNames, getEvalProperty)) + getEvalPropertyNames, getEvalPropertySafe)) { scriptEngine->registerEvaluator(this); } @@ -995,5 +997,15 @@ static int getEvalProperty(JSContext *ctx, JSPropertyDescriptor *desc, JSValue o return 0; } +static int getEvalPropertySafe(JSContext *ctx, JSPropertyDescriptor *desc, JSValue obj, JSAtom prop) +{ + try { + return getEvalProperty(ctx, desc, obj, prop); + } catch (const ErrorInfo &e) { + ScopedJsValue error(ctx, throwError(ctx, e.toString())); + return -1; + } +} + } // namespace Internal } // namespace qbs |