James Hawkins : kernel32: Fix removing trailing spaces from lpDefault for GetPrivateProfileString.

Alexandre Julliard julliard at winehq.org
Thu Jul 17 06:38:07 CDT 2008


Module: wine
Branch: master
Commit: 7e9df53f38bf0089151eea5a99f1509a9012cdf6
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7e9df53f38bf0089151eea5a99f1509a9012cdf6

Author: James Hawkins <jhawkins at 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");




More information about the wine-cvs mailing list