[Bug 740] Changed - divide by zero exception in x11drv.dll

David Ronis ronis at ronispc.chem.mcgill.ca
Fri May 31 13:34:00 CDT 2002


As I reported, I put in some trace's in the innermost x & y loops.
The problem is that the entire theImage is filled with zeros. Both
xmax and ymax are 32 and I can't belive the compiler is so broken that
the ++ operator fails; if so, we have more problems here, ground
control.

So only your last possibility seems reasonable.  On the other hand,
why can't a cursor mask be all zero's?

wine-bugs at winehq.com writes:
 > http://bugs.winehq.com/show_bug.cgi?id=740
 > 
 > *** shadow/740	Fri May 31 13:26:39 2002
 > --- shadow/740.tmp.7952	Fri May 31 13:26:50 2002
 > ***************
 > *** 251,253 ****
 > --- 251,300 ----
 >   
 >   ------- Additional Comments From Speeddymon at yahoo.com  2002-05-31 13:26 -------
 >   Adding Andriy to CC's
 > + 
 > + ------- Additional Comments From Speeddymon at yahoo.com  2002-05-31 13:26 -------
 > + ok, I have some info on the problem...
 > + 
 > + here is basically what happens:
 > + 
 > + fgBits gets initialized ;)
 > + fgBits gets set to zero
 > + then things screw up...
 > + 
 > + but you knew that I know, just keep reading...
 > + 
 > + 2 lines below where fgBits gets set to zero, xmax gets set to whatever, 
 > + possibly zero, same with ymax...
 > + 
 > + then we run a for on y=0 and compare it to ymax
 > + inside there we run a for on x=0 and compare it to xmax...
 > + then theres a switch that may be important to this bug
 > + and then the crucial if (red+green+blue > threshold)
 > + which is the only place that fgBits gets incremented before that divide by zero 
 > + error, so obviously 1 of 3 things is happening:
 > + 
 > + 1) ymax is being set to zero and so the for fails
 > + 2) xmax is being set to zero and so the for fails
 > + 3) red+green+blue is not being set high enough to pass the threshold if
 > + 
 > + and so fgBits++ isn't taking place...
 > + 
 > + now that I have looked back up at the switch, I see that lo and behold:
 > + 
 > + theChar = theImage[byteIndex++];
 > + red = theChar;
 > + 
 > + and like david said above, the whole theImage array is failing...
 > + 
 > + now, since I don't have access to a Linux box ATM (i have to go home to access 
 > + it) I can't add my own trace messages to see what is causing theImage to fail, 
 > + but it looks like either
 > + 
 > + 1) byteIndex++ isn't working for some really weird reason
 > + 2) byteIndex++ is working, but theImage[1] doesn't exist
 > + 3) &theMask[ptr->nWidth/8 * ptr->nHeight]; isn't working...
 > + 
 > + So... I will add my stuff tonight and try to post the results tomorrow....
 > + 
 > + all of this information is against the current mouse.c, not rev 1.2 which is 
 > + the first version with this problem...
 > \ No newline at end of file



More information about the wine-bugs mailing list