From fde45e98b9d8bd93828fd3301590b9f85bb29bbb Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Tue, 7 May 2024 13:59:46 +0200 Subject: [PATCH] Lua: Add Error handling during hook invocation Change-Id: I63bb062d87126278ad4f6670f5b98e31d59aa8bb Reviewed-by: David Schulz --- src/plugins/lua/bindings/hook.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/plugins/lua/bindings/hook.cpp b/src/plugins/lua/bindings/hook.cpp index 261e6fe115a..b626a83308f 100644 --- a/src/plugins/lua/bindings/hook.cpp +++ b/src/plugins/lua/bindings/hook.cpp @@ -46,15 +46,21 @@ void addHookModule() [](Hook *, QMetaObject::Connection con) { QObject::disconnect(con); }); }); - LuaEngine::registerHook("editors.documentOpened", [](const sol::function &func) { - QObject::connect(Core::EditorManager::instance(), - &Core::EditorManager::documentOpened, - [func](Core::IDocument *document) { func(document); }); + LuaEngine::registerHook("editors.documentOpened", [](const sol::protected_function &func) { + QObject::connect( + Core::EditorManager::instance(), + &Core::EditorManager::documentOpened, + [func](Core::IDocument *document) { + QTC_CHECK_EXPECTED(LuaEngine::void_safe_call(func, document)); + }); }); - LuaEngine::registerHook("editors.documentClosed", [](const sol::function &func) { - QObject::connect(Core::EditorManager::instance(), - &Core::EditorManager::documentClosed, - [func](Core::IDocument *document) { func(document); }); + LuaEngine::registerHook("editors.documentClosed", [](const sol::protected_function &func) { + QObject::connect( + Core::EditorManager::instance(), + &Core::EditorManager::documentClosed, + [func](Core::IDocument *document) { + QTC_CHECK_EXPECTED(LuaEngine::void_safe_call(func, document)); + }); }); }