Erik Inge Bolsø : kernel32: Fix PROFILE_Load to handle mac line endings.

Alexandre Julliard julliard at winehq.org
Tue Sep 23 09:28:31 CDT 2008


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

Author: Erik Inge Bolsø <knan-wine at anduin.net>
Date:   Sun Sep 21 16:49:16 2008 +0200

kernel32: Fix PROFILE_Load to handle mac line endings.

---

 dlls/kernel32/profile.c       |    1 +
 dlls/kernel32/tests/profile.c |   32 +++++++++++++++++++++-----------
 2 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/dlls/kernel32/profile.c b/dlls/kernel32/profile.c
index ab26533..3ed2dcd 100644
--- a/dlls/kernel32/profile.c
+++ b/dlls/kernel32/profile.c
@@ -405,6 +405,7 @@ static PROFILESECTION *PROFILE_Load(HANDLE hFile, ENCODING * pEncoding)
     {
         szLineStart = next_line;
         next_line = memchrW(szLineStart, '\n', szEnd - szLineStart);
+        if (!next_line) next_line = memchrW(szLineStart, '\r', szEnd - szLineStart);
         if (!next_line) next_line = szEnd;
         else next_line++;
         szLineEnd = next_line;
diff --git a/dlls/kernel32/tests/profile.c b/dlls/kernel32/tests/profile.c
index 8a3e83b..2a9f08a 100644
--- a/dlls/kernel32/tests/profile.c
+++ b/dlls/kernel32/tests/profile.c
@@ -428,7 +428,7 @@ static BOOL emptystr_ok(CHAR emptystr[MAX_PATH])
     return TRUE;
 }
 
-static void test_GetPrivateProfileString(void)
+static void test_GetPrivateProfileString(const char *content, const char *descript)
 {
     DWORD ret;
     CHAR buf[MAX_PATH];
@@ -441,15 +441,10 @@ static void test_GetPrivateProfileString(void)
     LPSTR tempfile;
 
     static const char filename[] = ".\\winetest.ini";
-    static const char content[]=
-        "[section1]\r\n"
-        "name1=val1\r\n"
-        "name2=\"val2\"\r\n"
-        "name3\r\n"
-        "name4=a\r\n"
-        "[section2]\r\n";
 
-    create_test_file(filename, content, sizeof(content));
+    trace("test_GetPrivateProfileStringA: %s\n", descript);
+
+    create_test_file(filename, content, lstrlenA(content));
 
     /* Run this test series with caching. Wine won't cache profile
        files younger than 2.1 seconds. */
@@ -674,7 +669,7 @@ static void test_GetPrivateProfileString(void)
     GetWindowsDirectoryA(windir, MAX_PATH);
     GetTempFileNameA(windir, "pre", 0, path);
     tempfile = strrchr(path, '\\') + 1;
-    create_test_file(path, content, sizeof(content));
+    create_test_file(path, content, lstrlenA(content));
 
     /* only filename is used, file exists in windows directory */
     lstrcpyA(buf, "kumquat");
@@ -703,5 +698,20 @@ START_TEST(profile)
     test_profile_existing();
     test_profile_delete_on_close();
     test_profile_refresh();
-    test_GetPrivateProfileString();
+    test_GetPrivateProfileString(
+        "[section1]\r\n"
+        "name1=val1\r\n"
+        "name2=\"val2\"\r\n"
+        "name3\r\n"
+        "name4=a\r\n"
+        "[section2]\r\n",
+        "CR+LF");
+    test_GetPrivateProfileString(
+        "[section1]\r"
+        "name1=val1\r"
+        "name2=\"val2\"\r"
+        "name3\r"
+        "name4=a\r"
+        "[section2]\r",
+        "CR only");
 }




More information about the wine-cvs mailing list