Module: wine Branch: master Commit: 83c422e1119f7b4768d7e06dcbb080fb3ae3a203 URL: http://source.winehq.org/git/wine.git/?a=commit;h=83c422e1119f7b4768d7e06dcb...
Author: Paul Vriens Paul.Vriens.Wine@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");