Paul Vriens : shell32/tests: Fix crash on ancient Win95.

Alexandre Julliard julliard at winehq.org
Tue Jan 19 11:53:44 CST 2010


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

Author: Paul Vriens <Paul.Vriens.Wine at gmail.com>
Date:   Tue Jan 19 16:02:26 2010 +0100

shell32/tests: Fix crash on ancient Win95.

---

 dlls/shell32/tests/progman_dde.c |   30 +++++++++++++++++++++++++-----
 1 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/dlls/shell32/tests/progman_dde.c b/dlls/shell32/tests/progman_dde.c
index 0a7fdaa..333e1f1 100644
--- a/dlls/shell32/tests/progman_dde.c
+++ b/dlls/shell32/tests/progman_dde.c
@@ -102,6 +102,30 @@ static BOOL use_common(void)
     return TRUE;
 }
 
+static BOOL full_title(void)
+{
+    CABINETSTATE cs;
+
+    memset(&cs, 0, sizeof(cs));
+    if (pReadCabinetState)
+    {
+        pReadCabinetState(&cs, sizeof(cs));
+    }
+    else
+    {
+        HKEY key;
+        DWORD size;
+
+        win_skip("ReadCabinetState is not available, reading registry directly\n");
+        RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CabinetState", &key);
+        size = sizeof(cs);
+        RegQueryValueExA(key, "Settings", NULL, NULL, (LPBYTE)&cs, &size);
+        RegCloseKey(key);
+    }
+
+    return (cs.fFullPathTitle == -1);
+}
+
 static char ProgramsDir[MAX_PATH];
 
 static char Group1Title[MAX_PATH]  = "Group1";
@@ -115,8 +139,6 @@ static void init_strings(void)
     char commonprograms[MAX_PATH];
     char programs[MAX_PATH];
 
-    CABINETSTATE cs;
-
     if (pSHGetSpecialFolderPathA)
     {
         pSHGetSpecialFolderPathA(NULL, programs, CSIDL_PROGRAMS, FALSE);
@@ -153,9 +175,7 @@ static void init_strings(void)
     else
         lstrcpyA(ProgramsDir, programs);
 
-    memset(&cs, 0, sizeof(cs));
-    pReadCabinetState(&cs, sizeof(cs));
-    if (cs.fFullPathTitle == -1)
+    if (full_title())
     {
         lstrcpyA(Group1Title, ProgramsDir);
         lstrcatA(Group1Title, "\\Group1");




More information about the wine-cvs mailing list