fixme:richedit:RICHED32_WindowProc Unknown message 129

Francois Gouget fgouget at free.fr
Tue Jan 15 13:01:31 CST 2002


On Tue, 15 Jan 2002 lawson_whitney at juno.com wrote:
[...]
> Hmmm, I can not get a +snoop=riched32 trace with the native
> riched32.  That frustrated me the last time I beat my head against this
> app and riched32.  +snoop simply hangs, and +edit,-snoop=msvcrt produces
> a huge trace, but the only mention of riched is in some strings to
> mfc42.6442.

   What happens when snoop hangs? Does the process seem to get into an
infinite loop?
   I once had a problem with +snoop where it would get into an infinite
loop when the pointer was 0xffffffff (-1). I did not have time to get to
the bottom of this at the time and now I am not sure I can even
reproduce the problem.

   But I did work around the problem by checking for -1 before doing the
string check. See the attached patch. +snoop was looping where I added
the TRACEs.


--
Francois Gouget         fgouget at free.fr        http://fgouget.free.fr/
     The software said it requires Win95 or better, so I installed Linux.
-------------- next part --------------
Index: relay32/snoop.c
===================================================================
RCS file: /home/wine/wine/relay32/snoop.c,v
retrieving revision 1.46
diff -u -r1.46 snoop.c
--- relay32/snoop.c	2001/12/11 00:50:34	1.46
+++ relay32/snoop.c	2002/01/15 06:57:41
@@ -213,7 +215,7 @@
 	int		i,nostring;
 	char * volatile ret=0;
 
-	if ( !HIWORD(x) ) { /* trivial reject to avoid faults */
+	if ( !HIWORD(x) || x==-1 ) { /* trivial reject to avoid faults */
 	    sprintf(buf,"%08lx",x);
 	    return buf;
 	}
@@ -221,9 +223,13 @@
 		LPBYTE	s=(LPBYTE)x;
 		i=0;nostring=0;
 		while (i<80) {
+                    if (x==-1) TRACE("%d: i=%d\n",__LINE__,i);
 			if (s[i]==0) break;
+                    if (x==-1) TRACE("%d: i=%d\n",__LINE__,i);
 			if (s[i]<0x20) {nostring=1;break;}
+                    if (x==-1) TRACE("%d: i=%d\n",__LINE__,i);
 			if (s[i]>=0x80) {nostring=1;break;}
+                    if (x==-1) TRACE("%d: i=%d\n",__LINE__,i);
 			i++;
 		}
 		if (!nostring) {


More information about the wine-devel mailing list