Module: wine Branch: master Commit: 2ee784e62416c9443bc6d227281556b4655ced00 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2ee784e62416c9443bc6d22728... Author: Dmitry Timoshkov <dmitry(a)baikal.ru> Date: Tue Nov 3 18:09:00 2015 +0800 msi: Make sure to reset the 'in_quotes' state in all cases. Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msi/action.c | 7 +++---- dlls/msi/tests/install.c | 9 ++++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/dlls/msi/action.c b/dlls/msi/action.c index df73652..136bfbb 100644 --- a/dlls/msi/action.c +++ b/dlls/msi/action.c @@ -255,8 +255,7 @@ static int parse_prop( const WCHAR *str, WCHAR *value, int *quotes ) len++; break; default: - if (!count) in_quotes = FALSE; - else in_quotes = TRUE; + if (count) in_quotes = TRUE; len++; break; } @@ -277,8 +276,7 @@ static int parse_prop( const WCHAR *str, WCHAR *value, int *quotes ) break; default: state = state_token; - if (!count) in_quotes = FALSE; - else in_quotes = TRUE; + if (count) in_quotes = TRUE; len++; break; } @@ -287,6 +285,7 @@ static int parse_prop( const WCHAR *str, WCHAR *value, int *quotes ) default: break; } if (!ignore) *out++ = *p; + if (!count) in_quotes = FALSE; } done: diff --git a/dlls/msi/tests/install.c b/dlls/msi/tests/install.c index 6b86cd2..9cd579b 100644 --- a/dlls/msi/tests/install.c +++ b/dlls/msi/tests/install.c @@ -4716,11 +4716,14 @@ static void test_propcase(void) ok(delete_pf("msitest\\augustus", TRUE), "File not installed\n"); ok(delete_pf("msitest", FALSE), "Directory not created\n"); - r = MsiInstallProductA(msifile, "BLAHBLAH=\"Copyright \"\"My Company\"\" 2015\" MyProp=42"); + r = MsiInstallProductA(msifile, "Prop1=\"Copyright \"\"My Company\"\" 2015\" MyProp=42"); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r); + ok(delete_pf("msitest\\augustus", TRUE), "File not installed\n"); + ok(delete_pf("msitest", FALSE), "Directory not created\n"); + + r = MsiInstallProductA(msifile, "Prop1=\"\"\"install.exe\"\" /Install\" MyProp=\"42\""); ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r); -todo_wine ok(delete_pf("msitest\\augustus", TRUE), "File not installed\n"); -todo_wine ok(delete_pf("msitest", FALSE), "Directory not created\n"); error: