Property sheet 'fix'

Lionel Ulmer lionel.ulmer at free.fr
Thu Jan 2 15:33:01 CST 2003


Hi all,

Making Resident Evil 3's configuration application work, I found this :

08078788:Call comctl32.PropertySheetA(406b0804) ret=004041c3
trace:propsheet:PropertySheetA (0x406b0804)
trace:propsheet:PROPSHEET_CollectSheetInfoA 
** PROPSHEETHEADER **
dwSize          52
dwFlags         00000180
hwndParent      (nil)
hInstance       (nil)
pszCaption      '"VIDEO Setting"'
nPages          1
pfnCallback     (nil)
trace:commctrl:COMCTL32_Alloc (0x1c)
trace:commctrl:COMCTL32_Alloc -- ret=0x429a00f0
trace:propsheet:PROPSHEET_CollectPageInfo 
trace:propsheet:PROPSHEET_CollectPageInfo Tab 0 L"VIDEO"
trace:propsheet:PROPSHEET_CreateDialog 
trace:commctrl:COMCTL32_Alloc (0x124)
trace:commctrl:COMCTL32_Alloc -- ret=0x429a0328
trace:seh:EXC_RtlRaiseException code=c0000005 flags=0 addr=(nil)

As seen, the '0x80' bit (ie USECALLBACK) is set but the callback is
set to NULL. In one case of the propsheet code this case is handled
but not in two other places.

So this patch just does the same check on pfnCallback in these two
other places. No idea if this is right or not but it certainly fixed
my problem :-)

Changelog:
 Check the value of the pfnCallback in addition to the callback bit.

        Lionel

-- 
		 Lionel Ulmer - http://www.bbrox.org/
-------------- next part --------------
--- /home/ulmer/Wine/wine_base//dlls/comctl32/propsheet.c	2002-12-22 12:06:16.000000000 +0100
+++ /home/ulmer/Wine/wine_work//dlls/comctl32/propsheet.c	2003-01-02 18:40:57.000000000 +0100
@@ -287,7 +287,7 @@
 
   psInfo->hasHelp = dwFlags & PSH_HASHELP;
   psInfo->hasApply = !(dwFlags & PSH_NOAPPLYNOW);
-  psInfo->useCallback = dwFlags & PSH_USECALLBACK;
+  psInfo->useCallback = (dwFlags & PSH_USECALLBACK )&& (lppsh->pfnCallback);
   psInfo->isModeless = dwFlags & PSH_MODELESS;
 
   memcpy(&psInfo->ppshheader,lppsh,dwSize);
@@ -338,7 +338,7 @@
 
   psInfo->hasHelp = dwFlags & PSH_HASHELP;
   psInfo->hasApply = !(dwFlags & PSH_NOAPPLYNOW);
-  psInfo->useCallback = dwFlags & PSH_USECALLBACK;
+  psInfo->useCallback = (dwFlags & PSH_USECALLBACK) && (lppsh->pfnCallback);
   psInfo->isModeless = dwFlags & PSH_MODELESS;
 
   memcpy(&psInfo->ppshheader,lppsh,dwSize);


More information about the wine-patches mailing list