diff options
| author | Justin M. Keyes <justinkz@gmail.com> | 2026-04-21 09:50:46 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-21 09:50:46 -0400 |
| commit | 4af0c5d8df5d72af28c171007d35e4e6285a0f57 (patch) | |
| tree | 9bb5c4d7d1cfae84c6659bd5d7ccb206f210ab4a | |
| parent | ac8459a09c9076282fc6a622a6f28dd0a0e1cde1 (diff) | |
build: gen_char_blob.lua: "bad argument to format" if path contains "%" #39274
Problem:
Build fails if user cloned the repo to a path with "%" chars:
src/gen/gen_char_blob.lua:51: bad argument #1 to 'format' (number expected, got string)
Solution:
- Escape "%" chars.
- Also use "%q" in case the path has spaces...
| -rw-r--r-- | CMakeLists.txt | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index a7fcb9b399..b911ccfec2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -213,14 +213,18 @@ if(COMPILE_LUA AND NOT WIN32) foreach(CURRENT_LUAC_PRG luac5.1 luac) find_program(_CHECK_LUAC_PRG ${CURRENT_LUAC_PRG}) if(_CHECK_LUAC_PRG) - set(LUAC_PRG "${_CHECK_LUAC_PRG} -s -o - %s" CACHE STRING "Format for compiling to Lua bytecode") + # Escape "%" for string.format() (in gen_char_blob.lua). #39271 + string(REPLACE "%" "%%" _LUAC_PRG_ESCAPED "${_CHECK_LUAC_PRG}") + set(LUAC_PRG "${_LUAC_PRG_ESCAPED} -s -o - %q" CACHE STRING "Format for compiling to Lua bytecode") break() endif() endforeach() elseif(LUA_PRG MATCHES "luajit") check_lua_module(${LUA_PRG} "jit.bcsave" LUAJIT_HAS_JIT_BCSAVE) if(LUAJIT_HAS_JIT_BCSAVE) - set(LUAC_PRG "${LUA_PRG} -b -s %s -" CACHE STRING "Format for compiling to Lua bytecode") + # Escape "%" for string.format() (in gen_char_blob.lua). #39271 + string(REPLACE "%" "%%" _LUA_PRG_ESCAPED "${LUA_PRG}") + set(LUAC_PRG "${_LUA_PRG_ESCAPED} -b -s %q -" CACHE STRING "Format for compiling to Lua bytecode") endif() endif() endif() |
