This way the arguments in `winedbg [--gdb] 'foo bar.exe' arg1 'arg 2'` get treated in the same way as those in `wine 'foo bar.exe' arg1 'arg 2'`. Previously, winedbg would essentially concatenate the arguments from argv into a single command line without quoting individual arguments. With the previously mentioned winedbg invocation, this would thus cause `foo` to be run with the argumetns `bar.exe` `arg1` `arg` and `2`, instead of `foo bar.exe` being run with the expected two arguments.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51844 Signed-off-by: Robbert van der Helm mail@robbertvanderhelm.nl --- This will break existing usages that manually quote their arguments (in the same way as `build_command_line()` does), but I feel like staying consistent with the way commands line arguments normally work in Unix-land (and in `gdb --args`) would lead to fewer surprises overall. --- programs/winedbg/tgt_active.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-)
diff --git a/programs/winedbg/tgt_active.c b/programs/winedbg/tgt_active.c index ad46d6b5fc5e..ec89039c1bfd 100644 --- a/programs/winedbg/tgt_active.c +++ b/programs/winedbg/tgt_active.c @@ -921,28 +921,15 @@ enum dbg_start dbg_active_attach(int argc, char* argv[]) */ enum dbg_start dbg_active_launch(int argc, char* argv[]) { - int i, len; LPSTR cmd_line;
if (argc == 0) return start_error_parse;
- if (!(cmd_line = HeapAlloc(GetProcessHeap(), 0, len = 1))) + if (!(cmd_line = build_command_line(argv))) { - oom_leave: dbg_printf("Out of memory\n"); return start_error_init; } - cmd_line[0] = '\0'; - - for (i = 0; i < argc; i++) - { - len += strlen(argv[i]) + 1; - if (!(cmd_line = HeapReAlloc(GetProcessHeap(), 0, cmd_line, len))) - goto oom_leave; - strcat(cmd_line, argv[i]); - cmd_line[len - 2] = ' '; - cmd_line[len - 1] = '\0'; - }
if (!dbg_start_debuggee(cmd_line)) {