aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBenoit Germain <benoit.germain@ubisoft.com>2024-05-29 15:05:19 +0200
committerBenoit Germain <benoit.germain@ubisoft.com>2024-05-29 15:05:19 +0200
commitf125d90796a7394760e98380255117952bcb0109 (patch)
tree8a55aca136c8667112ee9484e11740d9ef126afc /src
parent4007dbf5a2262a7c4f2f26089071942dde7c3a91 (diff)
downloadlanes-f125d90796a7394760e98380255117952bcb0109.tar.gz
lanes-f125d90796a7394760e98380255117952bcb0109.tar.bz2
lanes-f125d90796a7394760e98380255117952bcb0109.zip
Fix bad std::optional usage
Diffstat (limited to 'src')
-rw-r--r--src/state.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/state.cpp b/src/state.cpp
index 271e3a7..b747a9f 100644
--- a/src/state.cpp
+++ b/src/state.cpp
@@ -91,7 +91,7 @@ namespace {
91 91
92// ################################################################################################# 92// #################################################################################################
93 93
94static void open1lib(lua_State* L_, std::string_view const& name_) 94static void Open1Lib(lua_State* L_, std::string_view const& name_)
95{ 95{
96 for (luaL_Reg const& _entry : local::sLibs) { 96 for (luaL_Reg const& _entry : local::sLibs) {
97 if (name_ == _entry.name) { 97 if (name_ == _entry.name) {
@@ -285,20 +285,21 @@ lua_State* luaG_newstate(Universe* U_, SourceState from_, std::optional<std::str
285 lua_gc(_L, LUA_GCSTOP, 0); 285 lua_gc(_L, LUA_GCSTOP, 0);
286 286
287 // Anything causes 'base' and 'jit' to be taken in 287 // Anything causes 'base' and 'jit' to be taken in
288 std::string_view _libs{ libs_.value() }; 288 std::string_view _libs{};
289 if (libs_.has_value()) { 289 if (libs_.has_value()) {
290 _libs = libs_.value();
290 // special "*" case (mainly to help with LuaJIT compatibility) 291 // special "*" case (mainly to help with LuaJIT compatibility)
291 // as we are called from luaopen_lanes_core() already, and that would deadlock 292 // as we are called from luaopen_lanes_core() already, and that would deadlock
292 if (_libs == "*") { 293 if (_libs == "*") {
293 DEBUGSPEW_CODE(DebugSpew(U_) << "opening ALL standard libraries" << std::endl); 294 DEBUGSPEW_CODE(DebugSpew(U_) << "opening ALL standard libraries" << std::endl);
294 luaL_openlibs(_L); 295 luaL_openlibs(_L);
295 // don't forget lanes.core for regular lane states 296 // don't forget lanes.core for regular lane states
296 open1lib(_L, kLanesCoreLibName); 297 Open1Lib(_L, kLanesCoreLibName);
297 _libs = ""; // done with libs 298 _libs = ""; // done with libs
298 } else { 299 } else {
299 if constexpr (LUAJIT_FLAVOR() != 0) { // building against LuaJIT headers, always open jit 300 if constexpr (LUAJIT_FLAVOR() != 0) { // building against LuaJIT headers, always open jit
300 DEBUGSPEW_CODE(DebugSpew(U_) << "opening 'jit' library" << std::endl); 301 DEBUGSPEW_CODE(DebugSpew(U_) << "opening 'jit' library" << std::endl);
301 open1lib(_L, LUA_JITLIBNAME); 302 Open1Lib(_L, LUA_JITLIBNAME);
302 } 303 }
303 DEBUGSPEW_CODE(DebugSpew(U_) << "opening 'base' library" << std::endl); 304 DEBUGSPEW_CODE(DebugSpew(U_) << "opening 'base' library" << std::endl);
304 if constexpr (LUA_VERSION_NUM >= 502) { 305 if constexpr (LUA_VERSION_NUM >= 502) {
@@ -319,14 +320,16 @@ lua_State* luaG_newstate(Universe* U_, SourceState from_, std::optional<std::str
319 unsigned int _len{ 0 }; 320 unsigned int _len{ 0 };
320 for (char const* _p{ _libs.data() }; *_p; _p += _len) { 321 for (char const* _p{ _libs.data() }; *_p; _p += _len) {
321 // skip delimiters ('.' can be part of name for "lanes.core") 322 // skip delimiters ('.' can be part of name for "lanes.core")
322 while (*_p && !isalnum(*_p) && *_p != '.') 323 while (*_p && !std::isalnum(*_p) && *_p != '.') {
323 ++_p; 324 ++_p;
325 }
324 // skip name 326 // skip name
325 _len = 0; 327 _len = 0;
326 while (isalnum(_p[_len]) || _p[_len] == '.') 328 while (std::isalnum(_p[_len]) || _p[_len] == '.') {
327 ++_len; 329 ++_len;
330 }
328 // open library 331 // open library
329 open1lib(_L, { _p, _len }); 332 Open1Lib(_L, { _p, _len });
330 } 333 }
331 } 334 }
332 lua_gc(_L, LUA_GCRESTART, 0); 335 lua_gc(_L, LUA_GCRESTART, 0);