From b3f07139d26efe81036f814ab4be4b83be17c53d Mon Sep 17 00:00:00 2001 From: apocelipes Date: Fri, 31 Jul 2026 15:31:06 +0800 Subject: fix: fix engine resource leaks Release the argument block returned by CommandLineToArgvW after copying its values into Lua. Destroy embedded output streams after initialization even when opening the backing file fails. --- core/src/xmake/engine.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/xmake/engine.c b/core/src/xmake/engine.c index b93b29bb0..b37817cc9 100644 --- a/core/src/xmake/engine.c +++ b/core/src/xmake/engine.c @@ -814,6 +814,10 @@ static tb_bool_t xm_engine_save_arguments(xm_engine_t *engine, tb_int_t argc, tb lua_rawseti(engine->lua, -2, (int)lua_objlen(engine->lua, -2) + 1); } +#if defined(TB_CONFIG_OS_WINDOWS) && !defined(TB_COMPILER_LIKE_UNIX) + LocalFree(argvw); +#endif + // _ARGV = table_new lua_setglobal(engine->lua, "_ARGV"); return tb_true; @@ -1445,8 +1449,8 @@ static tb_bool_t xm_engine_extract_programfiles_impl(xm_engine_t *engine, if (tb_stream_open(stream)) { tb_stream_bwrit(stream, p, n); - tb_stream_exit(stream); } + tb_stream_exit(stream); p += n; } -- cgit v1.3.1