- only return DWORD aligned addresses in openings because the 3D floor code stores floating point values in there which cannot be accessed on platforms with strict alignment rules.

This commit is contained in:
Christoph Oelckers 2016-05-11 12:04:41 +02:00
parent 220255e6a4
commit 0726a88ab9
1 changed files with 2 additions and 0 deletions

View File

@ -2352,6 +2352,7 @@ void R_CheckDrawSegs ()
ptrdiff_t R_NewOpening (ptrdiff_t len)
{
ptrdiff_t res = lastopening;
len = (len + 1) & ~1; // only return DWORD aligned addresses because some code stores fixed_t's and floats in openings...
lastopening += len;
if ((size_t)lastopening > maxopenings)
{
@ -2512,6 +2513,7 @@ void R_StoreWallRange (int start, int stop)
if(sidedef->GetTexture(side_t::mid).isValid())
ds_p->bFakeBoundary |= 4; // it is also mid texture
// note: This should never have used the openings array to store its data!
ds_p->maskedtexturecol = R_NewOpening ((stop - start) * 2);
ds_p->swall = R_NewOpening ((stop - start) * 2);