Alexandre Julliard : explorer: Fix parsing command line that contains spaces.
Alexandre Julliard
julliard at winehq.org
Tue Dec 12 16:30:10 CST 2017
Module: wine
Branch: master
Commit: ff53db7e6396337692ed2966ef3bf49a4737e3a6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ff53db7e6396337692ed2966ef3bf49a4737e3a6
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Dec 12 09:33:32 2017 +0100
explorer: Fix parsing command line that contains spaces.
Reported by Alistair Leslie-Hughes.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
programs/explorer/explorer.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/programs/explorer/explorer.c b/programs/explorer/explorer.c
index afb565f..ac5bebb 100644
--- a/programs/explorer/explorer.c
+++ b/programs/explorer/explorer.c
@@ -658,7 +658,7 @@ static IShellFolder* get_starting_shell_folder(parameters_struct* params)
return folder;
}
-static int copy_path_string(LPWSTR target, LPWSTR source)
+static WCHAR *copy_path_string(WCHAR *target, WCHAR *source)
{
INT i = 0;
@@ -667,10 +667,9 @@ static int copy_path_string(LPWSTR target, LPWSTR source)
if (*source == '\"')
{
source ++;
- while (*source != '\"') target[i++] = *source++;
+ while (*source && *source != '\"') target[i++] = *source++;
target[i] = 0;
- source ++;
- i+=2;
+ if (*source) source++;
}
else
{
@@ -678,7 +677,7 @@ static int copy_path_string(LPWSTR target, LPWSTR source)
target[i] = 0;
}
PathRemoveBackslashW(target);
- return i;
+ return source;
}
@@ -741,12 +740,12 @@ static void parse_command_line(LPWSTR commandline,parameters_struct *parameters)
else if (strncmpW(p, arg_root, sizeof(arg_root)/sizeof(WCHAR))==0)
{
p += sizeof(arg_root)/sizeof(WCHAR);
- p+=copy_path_string(parameters->root,p);
+ p = copy_path_string(parameters->root,p);
}
else if (strncmpW(p, arg_select, sizeof(arg_select)/sizeof(WCHAR))==0)
{
p += sizeof(arg_select)/sizeof(WCHAR);
- p+=copy_path_string(parameters->selection,p);
+ p = copy_path_string(parameters->selection,p);
if (!parameters->root[0])
copy_path_root(parameters->root,
parameters->selection);
More information about the wine-cvs
mailing list