diff --git a/modules/geom/src/composite2.cc b/modules/geom/src/composite2.cc
index b72d334ddd4bbd7ae0885dd7af55e4792281dfaa..8a6aec909cdd9a9a8bbda1ffbf49e20add92f770 100644
--- a/modules/geom/src/composite2.cc
+++ b/modules/geom/src/composite2.cc
@@ -291,15 +291,17 @@ Polygon2::circular_iterator Polygon2::FindSegment(std::vector<Vec2>::const_itera
 }
 void Polygon2::Erase(circular_iterator first,circular_iterator last)
 {
+  std::vector<Vec2>::iterator vfirst=first,vlast=last;
   if(first!=cbegin()){
     for(circular_iterator it=first;it!=last;++it){
       if(it==cbegin()){ //special case with wrap around
-        std::vector<Vec2>::erase(first,end());
-        std::vector<Vec2>::erase(begin(),last);
+        std::vector<Vec2>::iterator vbegin=begin(),vend=end();
+        std::vector<Vec2>::erase(vfirst,vend);
+        std::vector<Vec2>::erase(vbegin,vlast);
       }
     }
   }
-  std::vector<Vec2>::erase(first,last);
+  std::vector<Vec2>::erase(vfirst,vlast);
 }
 
 Circle2::Circle2():