@@ -76,13 +76,16 @@ private InternalPath(PointData[] points, bool isClosedPath)
7676 this . points = points ;
7777 this . closedPath = isClosedPath ;
7878
79- float minX = this . points . Min ( x => x . Point . X ) ;
80- float maxX = this . points . Max ( x => x . Point . X ) ;
81- float minY = this . points . Min ( x => x . Point . Y ) ;
82- float maxY = this . points . Max ( x => x . Point . Y ) ;
79+ if ( this . points . Length > 0 )
80+ {
81+ float minX = this . points . Min ( x => x . Point . X ) ;
82+ float maxX = this . points . Max ( x => x . Point . X ) ;
83+ float minY = this . points . Min ( x => x . Point . Y ) ;
84+ float maxY = this . points . Max ( x => x . Point . Y ) ;
8385
84- this . Bounds = new RectangleF ( minX , minY , maxX - minX , maxY - minY ) ;
85- this . Length = this . points . Sum ( x => x . Length ) ;
86+ this . Bounds = new RectangleF ( minX , minY , maxX - minX , maxY - minY ) ;
87+ this . Length = this . points . Sum ( x => x . Length ) ;
88+ }
8689 }
8790
8891 /// <summary>
@@ -684,10 +687,14 @@ private static PointData[] Simplify(IEnumerable<ILineSegment> segments, bool isC
684687 private static PointData [ ] Simplify ( IEnumerable < PointF > vectors , bool isClosed )
685688 {
686689 PointF [ ] points = vectors . ToArray ( ) ;
687- var results = new List < PointData > ( ) ;
688690
689691 int polyCorners = points . Length ;
692+ if ( polyCorners == 0 )
693+ {
694+ return Array . Empty < PointData > ( ) ;
695+ }
690696
697+ var results = new List < PointData > ( ) ;
691698 Vector2 lastPoint = points [ 0 ] ;
692699
693700 if ( ! isClosed )
0 commit comments