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

View file

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