summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorruki <[email protected]>2026-07-11 00:37:21 +0800
committerruki <[email protected]>2026-07-11 00:37:21 +0800
commit9d654aa671f8aae9df7f1480221aaebe491e4d65 (patch)
treea3b7fbab2c62ffecd1ba4b3d2ff639970e7acf8b /core
parentfd2a0d87ab99d315c8d7ee9cb38e214d7e1c5ae6 (diff)
improve path translatepath
Diffstat (limited to 'core')
m---------core/src/tbox/tbox0
-rw-r--r--core/src/xmake/path/translate.c23
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 {