diff --git a/include/qbsp/winding.hh b/include/qbsp/winding.hh index c150a16d..2406f81b 100644 --- a/include/qbsp/winding.hh +++ b/include/qbsp/winding.hh @@ -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, diff --git a/qbsp/brush.cc b/qbsp/brush.cc index f5b272a8..d7891149 100644 --- a/qbsp/brush.cc +++ b/qbsp/brush.cc @@ -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); diff --git a/qbsp/winding.cc b/qbsp/winding.cc index 80a5b291..060c8dae 100644 --- a/qbsp/winding.cc +++ b/qbsp/winding.cc @@ -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