Hack to make sure even (extra)subsectors without planepolys have segs adjusted

this fixes a crash in (old) GFZ2 at the ramp as a result of creating pv1/pv2. This probably means before pv1/pv2 there could have been some silly typecasting from vertex_t to polyvertex_t to get fixed vertex coords and such...
This commit is contained in:
Monster Iestyn 2016-12-21 22:10:27 +00:00
parent 90cfa5ef16
commit 09eecd36b4
1 changed files with 23 additions and 21 deletions

View File

@ -878,8 +878,8 @@ static void AdjustSegs(void)
count = subsectors[i].numlines;
lseg = &segs[subsectors[i].firstline];
p = extrasubsectors[i].planepoly;
if (!p)
continue;
//if (!p)
//continue;
for (; count--; lseg++)
{
float distv1,distv2,tmp;
@ -892,6 +892,7 @@ static void AdjustSegs(void)
continue;
#endif
if (p) {
for (j = 0; j < p->numpts; j++)
{
distv1 = p->pts[j].x - FIXED_TO_FLOAT(lseg->v1->x);
@ -912,7 +913,8 @@ static void AdjustSegs(void)
nearv2 = distv2;
}
}
if (nearv1 <= NEARDIST*NEARDIST)
}
if (p && nearv1 <= NEARDIST*NEARDIST)
// share vertice with segs
lseg->pv1 = &(p->pts[v1found]);
else
@ -927,7 +929,7 @@ static void AdjustSegs(void)
pv->y = FIXED_TO_FLOAT(lseg->v1->y);
lseg->pv1 = pv;
}
if (nearv2 <= NEARDIST*NEARDIST)
if (p && nearv2 <= NEARDIST*NEARDIST)
lseg->pv2 = &(p->pts[v2found]);
else
{