diff --git a/Contrib/Makensisw/makensisw.cpp b/Contrib/Makensisw/makensisw.cpp index b0fbc872..8b443933 100644 --- a/Contrib/Makensisw/makensisw.cpp +++ b/Contrib/Makensisw/makensisw.cpp @@ -94,7 +94,7 @@ void SetScript(const char *script, bool clearArgs /*= true*/) GlobalFree(g_sdata.script_cmd_args); } - g_sdata.script_cmd_args = (char *) GlobalAlloc(GPTR, 1); + g_sdata.script_cmd_args = GlobalAlloc(GHND, 1); } g_sdata.script = (char *) GlobalAlloc(GPTR, lstrlen(script) + 1); @@ -103,13 +103,17 @@ void SetScript(const char *script, bool clearArgs /*= true*/) void AddScriptCmdArgs(const char *arg) { - g_sdata.script_cmd_args = (char *) GlobalReAlloc(g_sdata.script_cmd_args, + g_sdata.script_cmd_args = GlobalReAlloc(g_sdata.script_cmd_args, GlobalSize(g_sdata.script_cmd_args) + lstrlen(arg) + 2 /* quotes */ + 1 /* space */, 0); - lstrcat(g_sdata.script_cmd_args, " \""); - lstrcat(g_sdata.script_cmd_args, arg); - lstrcat(g_sdata.script_cmd_args, "\""); + char *args = (char *) GlobalLock(g_sdata.script_cmd_args); + + lstrcat(args, " \""); + lstrcat(args, arg); + lstrcat(args, "\""); + + GlobalUnlock(args); } void ProcessCommandLine() diff --git a/Contrib/Makensisw/makensisw.h b/Contrib/Makensisw/makensisw.h index 81c397cc..beadc3fc 100644 --- a/Contrib/Makensisw/makensisw.h +++ b/Contrib/Makensisw/makensisw.h @@ -165,7 +165,7 @@ void SaveMRUList(); typedef struct NSISScriptData { char *script; - char *script_cmd_args; + HGLOBAL script_cmd_args; char *compile_command; char *output_exe; char *input_script; diff --git a/Contrib/Makensisw/utils.cpp b/Contrib/Makensisw/utils.cpp index a5b6a66e..902d5fe0 100644 --- a/Contrib/Makensisw/utils.cpp +++ b/Contrib/Makensisw/utils.cpp @@ -280,11 +280,13 @@ void CompileNSISScript() { lstrcpy(compressor,""); } + char *args = (char *) GlobalLock(g_sdata.script_cmd_args); + g_sdata.compile_command = (char *) GlobalAlloc( GPTR, /* makensis.exe */ sizeof(EXENAME) + /* space */ 1 + /* script path */ lstrlen(g_sdata.script) + /* space */ 1 + - /* script cmd args */ lstrlen(g_sdata.script_cmd_args) + /* space */ 1 + + /* script cmd args */ lstrlen(args) + /* space */ 1 + /* defines /Dblah=... */ lstrlen(symbols) + /* space */ 1 + /* /XSetCompressor... */ lstrlen(compressor) + /* space */ 1 + /* /NOTTIFYHWND + HWND */ sizeof("/NOTIFYHWND -4294967295") + /* space */ 1 @@ -297,10 +299,11 @@ void CompileNSISScript() { compressor, symbols, g_sdata.hwnd, - g_sdata.script_cmd_args, + args, g_sdata.script ); + GlobalUnlock(args); GlobalFree(symbols); } GlobalFree(g_sdata.input_script);