Michael Karcher : kernel32/tests: Fix profile crash on NT and up.

Alexandre Julliard julliard at winehq.org
Tue Aug 19 08:47:01 CDT 2008


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

Author: Michael Karcher <wine at mkarcher.dialup.fu-berlin.de>
Date:   Sun Aug 17 19:03:03 2008 +0200

kernel32/tests: Fix profile crash on NT and up.

---

 dlls/kernel32/tests/profile.c |   47 ++++++++++++++++++++++++++++++++--------
 1 files changed, 37 insertions(+), 10 deletions(-)

diff --git a/dlls/kernel32/tests/profile.c b/dlls/kernel32/tests/profile.c
index 47b1ac1..4463f50 100644
--- a/dlls/kernel32/tests/profile.c
+++ b/dlls/kernel32/tests/profile.c
@@ -380,6 +380,20 @@ static void create_test_file(LPCSTR name, LPCSTR data, DWORD size)
     CloseHandle(hfile);
 }
 
+static BOOL emptystr_ok(CHAR emptystr[MAX_PATH])
+{
+    int i;
+
+    for(i = 0;i < MAX_PATH;++i)
+        if(emptystr[i] != 0)
+        {
+            trace("emptystr[%d] = %d\n",i,emptystr[i]);
+            return FALSE;
+        }
+
+    return TRUE;
+}
+
 static void test_GetPrivateProfileString(void)
 {
     DWORD ret;
@@ -387,6 +401,9 @@ static void test_GetPrivateProfileString(void)
     CHAR def_val[MAX_PATH];
     CHAR path[MAX_PATH];
     CHAR windir[MAX_PATH];
+    /* NT series crashes on r/o empty strings, so pass an r/w
+       empty string and check for modification */
+    CHAR emptystr[MAX_PATH] = "";
     LPSTR tempfile;
 
     static const char filename[] = ".\\winetest.ini";
@@ -410,10 +427,11 @@ static void test_GetPrivateProfileString(void)
 
     /* lpAppName is empty */
     lstrcpyA(buf, "kumquat");
-    ret = GetPrivateProfileStringA("", "name1", "default",
+    ret = GetPrivateProfileStringA(emptystr, "name1", "default",
                                    buf, MAX_PATH, filename);
     ok(ret == 7, "Expected 7, got %d\n", ret);
     ok(!lstrcmpA(buf, "default"), "Expected \"default\", got \"%s\"\n", buf);
+    ok(emptystr_ok(emptystr), "AppName modified\n");
 
     /* lpAppName is missing */
     lstrcpyA(buf, "kumquat");
@@ -424,42 +442,47 @@ static void test_GetPrivateProfileString(void)
 
     /* lpAppName is empty, lpDefault is NULL */
     lstrcpyA(buf, "kumquat");
-    ret = GetPrivateProfileStringA("", "name1", NULL,
+    ret = GetPrivateProfileStringA(emptystr, "name1", NULL,
                                    buf, MAX_PATH, filename);
     ok(ret == 0, "Expected 0, got %d\n", ret);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
+    ok(emptystr_ok(emptystr), "AppName modified\n");
 
     /* lpAppName is empty, lpDefault is empty */
     lstrcpyA(buf, "kumquat");
-    ret = GetPrivateProfileStringA("", "name1", "",
+    ret = GetPrivateProfileStringA(emptystr, "name1", "",
                                    buf, MAX_PATH, filename);
     ok(ret == 0, "Expected 0, got %d\n", ret);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
+    ok(emptystr_ok(emptystr), "AppName modified\n");
 
     /* lpAppName is empty, lpDefault has trailing blank characters */
     lstrcpyA(buf, "kumquat");
     /* lpDefault must be writable (trailing blanks are removed inplace in win9x) */
     lstrcpyA(def_val, "default  ");
-    ret = GetPrivateProfileStringA("", "name1", def_val,
+    ret = GetPrivateProfileStringA(emptystr, "name1", def_val,
                                    buf, MAX_PATH, filename);
     ok(ret == 7, "Expected 7, got %d\n", ret);
     ok(!lstrcmpA(buf, "default"), "Expected \"default\", got \"%s\"\n", buf);
+    ok(emptystr_ok(emptystr), "AppName modified\n");
 
     /* lpAppName is empty, many blank characters in lpDefault */
     lstrcpyA(buf, "kumquat");
     /* lpDefault must be writable (trailing blanks are removed inplace in win9x) */
     lstrcpyA(def_val, "one two  ");
-    ret = GetPrivateProfileStringA("", "name1", def_val,
+    ret = GetPrivateProfileStringA(emptystr, "name1", def_val,
                                    buf, MAX_PATH, filename);
     ok(ret == 7, "Expected 7, got %d\n", ret);
     ok(!lstrcmpA(buf, "one two"), "Expected \"one two\", got \"%s\"\n", buf);
+    ok(emptystr_ok(emptystr), "AppName modified\n");
 
     /* lpAppName is empty, blank character but not trailing in lpDefault */
     lstrcpyA(buf, "kumquat");
-    ret = GetPrivateProfileStringA("", "name1", "one two",
+    ret = GetPrivateProfileStringA(emptystr, "name1", "one two",
                                    buf, MAX_PATH, filename);
     ok(ret == 7, "Expected 7, got %d\n", ret);
     ok(!lstrcmpA(buf, "one two"), "Expected \"one two\", got \"%s\"\n", buf);
+    ok(emptystr_ok(emptystr), "AppName modified\n");
 
     /* lpKeyName is NULL */
     lstrcpyA(buf, "kumquat");
@@ -471,10 +494,11 @@ static void test_GetPrivateProfileString(void)
 
     /* lpKeyName is empty */
     lstrcpyA(buf, "kumquat");
-    ret = GetPrivateProfileStringA("section1", "", "default",
+    ret = GetPrivateProfileStringA("section1", emptystr, "default",
                                    buf, MAX_PATH, filename);
     ok(ret == 7, "Expected 7, got %d\n", ret);
     ok(!lstrcmpA(buf, "default"), "Expected \"default\", got \"%s\"\n", buf);
+    ok(emptystr_ok(emptystr), "KeyName modified\n");
 
     /* lpKeyName is missing */
     lstrcpyA(buf, "kumquat");
@@ -485,26 +509,29 @@ static void test_GetPrivateProfileString(void)
 
     /* lpKeyName is empty, lpDefault is NULL */
     lstrcpyA(buf, "kumquat");
-    ret = GetPrivateProfileStringA("section1", "", NULL,
+    ret = GetPrivateProfileStringA("section1", emptystr, NULL,
                                    buf, MAX_PATH, filename);
     ok(ret == 0, "Expected 0, got %d\n", ret);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
+    ok(emptystr_ok(emptystr), "KeyName modified\n");
 
     /* lpKeyName is empty, lpDefault is empty */
     lstrcpyA(buf, "kumquat");
-    ret = GetPrivateProfileStringA("section1", "", "",
+    ret = GetPrivateProfileStringA("section1", emptystr, "",
                                    buf, MAX_PATH, filename);
     ok(ret == 0, "Expected 0, got %d\n", ret);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
+    ok(emptystr_ok(emptystr), "KeyName modified\n");
 
     /* lpKeyName is empty, lpDefault has trailing blank characters */
     lstrcpyA(buf, "kumquat");
     /* lpDefault must be writable (trailing blanks are removed inplace in win9x) */
     lstrcpyA(def_val, "default  ");
-    ret = GetPrivateProfileStringA("section1", "", def_val,
+    ret = GetPrivateProfileStringA("section1", emptystr, def_val,
                                    buf, MAX_PATH, filename);
     ok(ret == 7, "Expected 7, got %d\n", ret);
     ok(!lstrcmpA(buf, "default"), "Expected \"default\", got \"%s\"\n", buf);
+    ok(emptystr_ok(emptystr), "KeyName modified\n");
 
     if (0) /* crashes */
     {




More information about the wine-cvs mailing list