diff options
author | Adam Harrison <adamdharrison@gmail.com> | 2023-06-09 10:09:16 -0400 |
---|---|---|
committer | Adam Harrison <adamdharrison@gmail.com> | 2023-06-09 10:09:16 -0400 |
commit | 872b66996c6423a85ddccc905ce7382caa9264a7 (patch) | |
tree | 12fbd4a3550550a1f9f3527e43272c44e801e9c3 | |
parent | 74ced2030dc40b59b0ebce42269780c2f11afb6d (diff) | |
download | lite-xl-plugin-manager-872b66996c6423a85ddccc905ce7382caa9264a7.tar.gz lite-xl-plugin-manager-872b66996c6423a85ddccc905ce7382caa9264a7.zip |
Updated realpath call to use internal buffer, fixing an issue on windows.
-rw-r--r-- | src/lpm.c | 7 |
1 files changed, 3 insertions, 4 deletions
@@ -231,18 +231,18 @@ static int lpm_mkdir(lua_State *L) { static int lpm_stat(lua_State *L) { const char *path = luaL_checkstring(L, 1); + char fullpath[MAX_PATH]; #ifdef _WIN32 - #define realpath(x, y) _wfullpath(y, x, MAX_PATH) struct _stat s; LPCWSTR wpath = lua_toutf16(L, path); int err = _wstat(wpath, &s); - LPCWSTR wfullpath = realpath(wpath, NULL); + LPCWSTR wfullpath = _wfullpath(fullpath, wpath, MAX_PATH); if (!wfullpath) return 0; const char *abs_path = lua_toutf8(L, wfullpath); #else struct stat s; int err = lstat(path, &s); - const char *abs_path = !err ? realpath(path, NULL) : NULL; + const char *abs_path = !err ? realpath(path, fullpath) : NULL; #endif if (err || !abs_path) { lua_pushnil(L); @@ -251,7 +251,6 @@ static int lpm_stat(lua_State *L) { } lua_newtable(L); lua_pushstring(L, abs_path); lua_setfield(L, -2, "abs_path"); - free((char*)abs_path); lua_pushvalue(L, 1); lua_setfield(L, -2, "path"); #if __linux__ |