[PATCH 2/2] Fix crash on ancient Win95
Paul Vriens
Paul.Vriens.Wine at gmail.com
Tue Jan 19 08:39:17 CST 2010
---
dlls/shell32/tests/progman_dde.c | 29 ++++++++++++++++++++++++-----
1 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/dlls/shell32/tests/progman_dde.c b/dlls/shell32/tests/progman_dde.c
index 0a7fdaa..ae290ef 100644
--- a/dlls/shell32/tests/progman_dde.c
+++ b/dlls/shell32/tests/progman_dde.c
@@ -102,6 +102,29 @@ 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;
+
+ 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 +138,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 +174,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");
--
1.6.2.5
--------------090302050008060308050004--
More information about the wine-patches
mailing list