diff options
| author | ruki <[email protected]> | 2026-07-11 00:37:21 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2026-07-11 00:37:21 +0800 |
| commit | 9d654aa671f8aae9df7f1480221aaebe491e4d65 (patch) | |
| tree | a3b7fbab2c62ffecd1ba4b3d2ff639970e7acf8b /core | |
| parent | fd2a0d87ab99d315c8d7ee9cb38e214d7e1c5ae6 (diff) | |
improve path translatepath
Diffstat (limited to 'core')
| m--------- | core/src/tbox/tbox | 0 | ||||
| -rw-r--r-- | core/src/xmake/path/translate.c | 23 |
2 files changed, 10 insertions, 13 deletions
diff --git a/core/src/tbox/tbox b/core/src/tbox/tbox -Subproject 38e3a97a38c4551271639a689e77060369b4746 +Subproject 622da925c4c61e15f16d89ab39d840867c42a11 diff --git a/core/src/xmake/path/translate.c b/core/src/xmake/path/translate.c index cd2f4e51d..ce2e83169 100644 --- a/core/src/xmake/path/translate.c +++ b/core/src/xmake/path/translate.c @@ -53,25 +53,22 @@ tb_int_t xm_path_translate(lua_State *lua) { } // do path:translate() - /* use a larger heap buffer for the long path to avoid stack buffer overflow, - * because tb_path_translate_to() does not truncate the output. - * https://github.com/xmake-io/xmake/issues/6962 - * - * note: we cannot expand maxn for the `~` prefixed path, - * because tbox expands the home directory with an internal TB_PATH_MAXN buffer. - */ tb_char_t buff[TB_PATH_MAXN]; tb_char_t* data = buff; tb_size_t maxn = sizeof(buff); - if (path_size + 1 > maxn) { - if (path[0] == '~') { - lua_pushnil(lua); - return 1; - } + tb_size_t size = tb_path_translate_to(path, (tb_size_t)path_size, data, maxn, normalize); + if (!size) { + /* use a larger heap buffer for the long path to avoid stack buffer overflow, + * because tb_path_translate_to() does not truncate the output. + * https://github.com/xmake-io/xmake/issues/6962 + * + * note: we cannot expand maxn for the `~` prefixed path, + * because tbox expands the home directory with an internal TB_PATH_MAXN buffer. + */ maxn = (tb_size_t)path_size + TB_PATH_MAXN; data = (tb_char_t *)lua_newuserdata(lua, maxn); + size = tb_path_translate_to(path, (tb_size_t)path_size, data, maxn, normalize); } - tb_size_t size = tb_path_translate_to(path, (tb_size_t)path_size, data, maxn, normalize); if (size) { lua_pushlstring(lua, data, (size_t)size); } else { |
