Module: wine Branch: master Commit: 7e9df53f38bf0089151eea5a99f1509a9012cdf6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7e9df53f38bf0089151eea5a99...
Author: James Hawkins jhawkins@codeweavers.com Date: Wed Jul 16 16:25:54 2008 -0500
kernel32: Fix removing trailing spaces from lpDefault for GetPrivateProfileString.
---
dlls/kernel32/profile.c | 19 ++++++++----------- dlls/kernel32/tests/profile.c | 14 ++++---------- 2 files changed, 12 insertions(+), 21 deletions(-)
diff --git a/dlls/kernel32/profile.c b/dlls/kernel32/profile.c index 9b6b1a1..ad43677 100644 --- a/dlls/kernel32/profile.c +++ b/dlls/kernel32/profile.c @@ -1084,17 +1084,14 @@ static int PROFILE_GetPrivateProfileString( LPCWSTR section, LPCWSTR entry, /* strip any trailing ' ' of def_val. */ if (def_val) { - LPCWSTR p = &def_val[strlenW(def_val)]; /* even "" works ! */ + LPCWSTR p = &def_val[strlenW(def_val) - 1];
- while (p > def_val) - { - p--; - if ((*p) != ' ') - break; - } - if (*p == ' ') /* ouch, contained trailing ' ' */ - { - int len = (int)(p - def_val); + while (p > def_val && *p == ' ') + p--; + + if (p >= def_val) + { + int len = (int)(p - def_val) + 1;
defval_tmp = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR)); memcpy(defval_tmp, def_val, len * sizeof(WCHAR)); diff --git a/dlls/kernel32/tests/profile.c b/dlls/kernel32/tests/profile.c index 81999dc..414b596 100644 --- a/dlls/kernel32/tests/profile.c +++ b/dlls/kernel32/tests/profile.c @@ -418,21 +418,15 @@ static void test_GetPrivateProfileString(void) lstrcpyA(buf, "kumquat"); ret = GetPrivateProfileStringA("", "name1", "default ", buf, MAX_PATH, filename); - todo_wine - { - ok(ret == 7, "Expected 7, got %d\n", ret); - ok(!lstrcmpA(buf, "default"), "Expected "default", got "%s"\n", buf); - } + ok(ret == 7, "Expected 7, got %d\n", ret); + ok(!lstrcmpA(buf, "default"), "Expected "default", got "%s"\n", buf);
/* lpAppName is empty, many blank characters in lpDefault */ lstrcpyA(buf, "kumquat"); ret = GetPrivateProfileStringA("", "name1", "one two ", buf, MAX_PATH, filename); - todo_wine - { - ok(ret == 7, "Expected 7, got %d\n", ret); - ok(!lstrcmpA(buf, "one two"), "Expected "one two", got "%s"\n", buf); - } + ok(ret == 7, "Expected 7, got %d\n", ret); + ok(!lstrcmpA(buf, "one two"), "Expected "one two", got "%s"\n", buf);
/* lpAppName is empty, blank character but not trailing in lpDefault */ lstrcpyA(buf, "kumquat");