qbsp: fix memory corruption in SplitBrush
This commit is contained in:
parent
9629134612
commit
578d24951d
|
|
@ -38,6 +38,7 @@ winding_t *BaseWindingForPlane(const qbsp_plane_t *p);
|
|||
void CheckWinding(const winding_t *w);
|
||||
winding_t *NewWinding(int points);
|
||||
winding_t *CopyWinding(const winding_t *w);
|
||||
void CopyWindingInto(winding_t *dest, const winding_t *src); // FIXME: get rid of this
|
||||
winding_t *FlipWinding(const winding_t *w);
|
||||
winding_t *ClipWinding(winding_t *in, const qbsp_plane_t *split, bool keepon);
|
||||
void DivideWinding(const winding_t *in, const qbsp_plane_t *split, winding_t **front,
|
||||
|
|
|
|||
|
|
@ -1564,7 +1564,7 @@ void SplitBrush (const brush_t *brush,
|
|||
*/
|
||||
|
||||
face_t *newface = CopyFace(face);
|
||||
newface->w = *cw[j];
|
||||
CopyWindingInto(&newface->w, cw[j]);
|
||||
UpdateFaceSphere(newface);
|
||||
|
||||
// link it into the front or back brush we are building
|
||||
|
|
@ -1624,16 +1624,14 @@ void SplitBrush (const brush_t *brush,
|
|||
|
||||
if (i == 0) {
|
||||
winding_t *newwinding = FlipWinding(midwinding);
|
||||
newface->w = *newwinding;
|
||||
CopyWindingInto(&newface->w, newwinding);
|
||||
newface->planenum = planenum;
|
||||
newface->planeside = !planeside;
|
||||
FreeMem(newwinding, WINDING, 1);
|
||||
} else {
|
||||
winding_t *newwinding = CopyWinding(midwinding);
|
||||
newface->w = *newwinding;
|
||||
CopyWindingInto(&newface->w, midwinding);
|
||||
newface->planenum = planenum;
|
||||
newface->planeside = planeside;
|
||||
FreeMem(newwinding, WINDING, 1);
|
||||
}
|
||||
|
||||
UpdateFaceSphere(newface);
|
||||
|
|
|
|||
|
|
@ -112,6 +112,12 @@ CopyWinding(const winding_t *w)
|
|||
return c;
|
||||
}
|
||||
|
||||
void CopyWindingInto(winding_t *dest, const winding_t *src) // FIXME: get rid of this
|
||||
{
|
||||
dest->numpoints = src->numpoints;
|
||||
memcpy(dest->points, src->points, sizeof(vec3_t) * src->numpoints);
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
FlipWinding
|
||||
|
|
|
|||
Loading…
Reference in New Issue