On Fri, 27 Jul 2001, Matt wrote:

> On Thu, 26 Jul 2001, Matt wrote:
>
> > With all the known purify problems eliminated (not including savegames),
> > tracking down what's going wrong on win32 fullscreen support is a bit
> > easier. Everything points to gfx_crossblit.c, line 60. There is one byte
> > past the end of priority_buffer that is read.
> >
> > Call stack follows:
> >     gfx_crossblit_32_P [gfx_crossblit.c:60]
>
> Looking at the Purify callstack more closely shows that the uninitialized
> memory reads that happen in fullscreen mode (and not windowed mode) only
> happen when the crossblit_32 function is called @ gfx_support.c(328).
>
> The priority information isn't passed into the crossblit function at that
> point, but the crossblit function is trying to read the priority_buffer
> anyways. It seems to me that this is where the problem is.

I've added "if (priority != GFX_NO_PRIORITY)"  to "#ifdef USE_PRIORITY",
which has helped track things down a bit.

The value for yl being passed into the crossblit function is different,
depending on whether windowed or fullscreen is being used. I've tracked
this back to operactions.c in _gfxop_draw_cel_buffer(), where after line
1675, pxm->yl is where the difference appears to start.

I also removed the #ifdef _MSC_VER in the SDL driver that changed the
ysize. This didn't appear to be part of the problem at all.

Sorry for the copious emails/notes, but I'm finding the more I explain
things the better I am understanding them.

--
http://www.clock.org/~matt


Reply via email to