]> de.git.xonotic.org Git - xonotic/netradiant.git/commitdiff
Merge branch 'netradiant-156-fix-invalid-vector-access' into 'master'
authorThomas Debesse <dev@illwieckz.net>
Thu, 18 Aug 2022 13:37:01 +0000 (13:37 +0000)
committerThomas Debesse <dev@illwieckz.net>
Thu, 18 Aug 2022 13:37:01 +0000 (13:37 +0000)
Do not crash in Winding_Clip when using -D_GLIBCXX_ASSERTIONS

Closes #156

See merge request xonotic/netradiant!194

radiant/winding.cpp

index 9651af2c2c027dc665fbda6d9f91dfa7ddb721ec..8865db52aff206f4a0050d90eac9608c90b64f7d 100644 (file)
@@ -194,6 +194,10 @@ const double DEBUG_EPSILON_SQUARED = DEBUG_EPSILON * DEBUG_EPSILON;
 /// If \p winding is completely in back of the plane, \p clipped will be empty.
 /// If \p winding intersects the plane, the edge of \p clipped which lies on \p clipPlane will store the value of \p adjacent.
 void Winding_Clip( const FixedWinding& winding, const Plane3& plane, const Plane3& clipPlane, std::size_t adjacent, FixedWinding& clipped ){
+       // if there are no points, we're done
+       if ( winding.size() == 0 ) {
+               return;
+       }
        PlaneClassification classification = Winding_ClassifyDistance( plane3_distance_to_point( clipPlane, winding.back().vertex ), ON_EPSILON );
        PlaneClassification nextClassification;
        // for each edge