clip_children revisited

lawson_whitney at juno.com lawson_whitney at juno.com
Fri Jun 15 19:00:18 CDT 2001


Good day!

I reversed my clip_children patch and applied the one that recently
appeared in wine-cvs, and got this:

Unhandled exception: page fault on read access to 0x00000067
 in 32-bit code (0x40a55f5a).
In 32-bit mode.
Symbol h_errno is invalid
Symbol hack_digit is invalid
0x40a55f5a (clip_children+0x8a [winpos.c:83] in libx11drv.so): testb
$0x10,0x67(%esi)
83              if (ptr->dwStyle & WS_VISIBLE)
Wine-dbg>info local
clip_children:win == 0x40385a4c
clip_children:last == 0x40386538
clip_children:hrgn == 0x000011b2
clip_children:whole_window == 0x00000000
clip_children:win (optimized into register $edx) == 0x406e4cac
clip_children:ptr (optimized into register $esi) == 0x00000000
clip_children:rectRgn (optimized into register $edi) == 0x000011ba
clip_children:x == 0x00000000
clip_children:y == 0x00000000
Wine-dbg>

It seems my app still needs this, or something similar, so meaning no
disrespect, I commend it to your attention again.

Regards,

Lawson
---------- Forwarded message ----------
Date: Thu, 14 Jun 2001 10:35:05 -0400 (EDT)
From: whit at giftie.alien.org
To: wine-patches at winehq.com
Subject: clip fewer children

Good day!

This is just a knee-jerk reaction to a null-pointer dereference, but it
makes my app run again.  If somebody figures out how to stop the pointer
being null in the first place, maybe that is a better way.  I'll send a
backtrace to wine-devel.

ChangeLog:
	* dlls/x11drv/winpos.c:
	Lawson Whitney <lawson_whitney at juno.com>
	Don't try to clip children that aren't there.

Or, if you prefer,

ChangeLog:
	* dlls/x11drv/winpos.c:
	Lawson Whitney <lawson_whitney at juno.com>
	Protect against null-pointer dereference.


Regards,

Lawson
-------------- next part --------------
diff -urN was/dlls/x11drv/winpos.c is/dlls/x11drv/winpos.c
--- was/dlls/x11drv/winpos.c	Thu Jun 14 00:29:36 2001
+++ is/dlls/x11drv/winpos.c	Thu Jun 14 09:39:07 2001
@@ -78,7 +78,7 @@
     else x = y = 0;
 
     rectRgn = CreateRectRgn( 0, 0, 0, 0 );
-    while (ptr != last)
+    while ((ptr) && (ptr != last))
     {
         if (ptr->dwStyle & WS_VISIBLE)
         {


More information about the wine-patches mailing list