From 96227fd4754acacc246c59c1aa707ea5a28b2e9f Mon Sep 17 00:00:00 2001 From: Siarhei Fedartsou Date: Sat, 22 Jun 2024 20:30:21 +0200 Subject: [PATCH] Debug osrm-extract CI crash --- src/extractor/scripting_environment_lua.cpp | 22 ++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/extractor/scripting_environment_lua.cpp b/src/extractor/scripting_environment_lua.cpp index 8232f0476..e4e3b82bb 100644 --- a/src/extractor/scripting_environment_lua.cpp +++ b/src/extractor/scripting_environment_lua.cpp @@ -1254,7 +1254,7 @@ void Sol2ScriptingEnvironment::ProcessSegment(ExtractionSegment &segment) if (context.has_segment_function) { - sol::protected_function_result luares; + std::optional luares; switch (context.api_version) { case 4: @@ -1274,8 +1274,8 @@ void Sol2ScriptingEnvironment::ProcessSegment(ExtractionSegment &segment) break; } - if (!luares.valid()) - handle_lua_error(luares); + if (luares && !luares->valid()) + handle_lua_error(*luares); } } @@ -1285,7 +1285,7 @@ void LuaScriptingContext::ProcessNode(const osmium::Node &node, { BOOST_ASSERT(state.lua_state() != nullptr); - sol::protected_function_result luares; + std::optional luares; // TODO check for api version, make sure luares is always set switch (api_version) @@ -1302,10 +1302,12 @@ void LuaScriptingContext::ProcessNode(const osmium::Node &node, case 0: luares = node_function(std::cref(node), std::ref(result)); break; + default: + BOOST_ASSERT(false && "Invalid API version"); } - if (!luares.valid()) - handle_lua_error(luares); + if (luares && !luares->valid()) + handle_lua_error(*luares); } void LuaScriptingContext::ProcessWay(const osmium::Way &way, @@ -1314,7 +1316,7 @@ void LuaScriptingContext::ProcessWay(const osmium::Way &way, { BOOST_ASSERT(state.lua_state() != nullptr); - sol::protected_function_result luares; + std::optional luares; // TODO check for api version, make sure luares is always set switch (api_version) @@ -1331,10 +1333,12 @@ void LuaScriptingContext::ProcessWay(const osmium::Way &way, case 0: luares = way_function(std::cref(way), std::ref(result)); break; + default: + BOOST_ASSERT(false && "Invalid API version"); } - if (!luares.valid()) - handle_lua_error(luares); + if (luares && !luares->valid()) + handle_lua_error(*luares); } } // namespace osrm::extractor