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