From 59a4f6f5018a77f12528dd5d21dd7627b39a54a8 Mon Sep 17 00:00:00 2001 From: Guldoman Date: Sun, 25 Feb 2024 23:22:52 +0100 Subject: Fix Windows install issues (#79) * Don't create destination path in `Bottle:construct` This avoids that `common.rename` moves the source to the wrong path (`dst/src_basename`). * Fix executable detection in `Bottle:run` --- src/lpm.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lpm.lua b/src/lpm.lua index a84ee7c..d8cac2f 100644 --- a/src/lpm.lua +++ b/src/lpm.lua @@ -1377,7 +1377,7 @@ function Bottle:construct() end -- atomically move things common.rmrf(local_path) - common.mkdirp(local_path) + common.mkdirp(common.dirname(local_path)) common.rename(self.local_path, local_path) self.local_path = local_path end @@ -1391,7 +1391,7 @@ end function Bottle:run(args) args = args or {} if self.is_system then error("system bottle cannot be run") end - local path = self.local_path .. PATHSEP .. "lite-xl" + local path = self.local_path .. PATHSEP .. "lite-xl" .. EXECUTABLE_EXTENSION if not system.stat(path) then error("cannot find bottle executable " .. path) end os.execute(path .. (#args > 0 and " " or "") .. table.concat(args, " ")) end -- cgit v1.2.3 From b4931cb618a2b4d22482694cbc40e60990d684fc Mon Sep 17 00:00:00 2001 From: Gaspartcho <93390411+Gaspartcho@users.noreply.github.com> Date: Sun, 25 Feb 2024 23:23:28 +0100 Subject: hopefully fixed the memory leak (#83) --- lib/microtar/src/microtar.c | 5 +++-- src/lpm.c | 11 +++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/microtar/src/microtar.c b/lib/microtar/src/microtar.c index 1cd9920..20c509d 100644 --- a/lib/microtar/src/microtar.c +++ b/lib/microtar/src/microtar.c @@ -337,8 +337,9 @@ int mtar_clear_header(mtar_header_t *h){ h->size = 0; h->mtime = 0; h->type = 0; - bzero(h->name, strlen(h->name)); - bzero(h->linkname, strlen(h->linkname)); + + bzero(h->name, sizeof(h->name)); + bzero(h->linkname, sizeof(h->linkname)); return MTAR_ESUCCESS; } diff --git a/src/lpm.c b/src/lpm.c index 11084ed..75868dc 100644 --- a/src/lpm.c +++ b/src/lpm.c @@ -820,6 +820,9 @@ static int lpm_extract(lua_State* L) { int has_ext_before = 0; int has_ext_allways = 0; + mtar_clear_header(&before_h); + mtar_clear_header(&allways_h); + while ((mtar_read_header(&tar, &h)) != MTAR_ENULLRECORD ) { if (h.type == MTAR_TREG) { @@ -839,7 +842,6 @@ static int lpm_extract(lua_State* L) { return luaL_error(L, "can't extract tar archive file %s, can't create directory %s: %s", src, target, strerror(errno)); } - char buffer[8192]; FILE* file = fopen(target, "wb"); if (!file) { mtar_close(&tar); @@ -848,7 +850,8 @@ static int lpm_extract(lua_State* L) { if (chmod(target, h.mode)) return luaL_error(L, "can't extract tar archive file %s, can't chmod file %s: %s", src, target, strerror(errno)); - + + char buffer[8192]; int remaining = h.size; while (remaining > 0) { int read_size = remaining < sizeof(buffer) ? remaining : sizeof(buffer); @@ -926,7 +929,7 @@ static int lpm_extract(lua_State* L) { if (mtar_read_data(&tar, before_h.name, read_size) != MTAR_ESUCCESS) { mtar_close(&tar); return luaL_error(L, "Error while reading GNU extended: %s", strerror(errno)); - } + } } else if (h.type == MTAR_TGLP) { @@ -936,7 +939,7 @@ static int lpm_extract(lua_State* L) { if (mtar_read_data(&tar, before_h.linkname, read_size) != MTAR_ESUCCESS) { mtar_close(&tar); return luaL_error(L, "Error while reading GNU extended: %s", strerror(errno)); - } + } } mtar_next(&tar); -- cgit v1.2.3