diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp
index e0a0d39ce93a2cb917157c37d5d477a7b4540049..a550b38a4aa4ebcaa33afe0f26325f4e032fe283 100644
--- a/Geo/GModel.cpp
+++ b/Geo/GModel.cpp
@@ -1065,7 +1065,7 @@ void GModel::createTopologyFromMesh()
       //printf("create face2Edges myEdges.size =%d \n", myEdges.size());
 
 
-      //for each actual GEdge
+     //for each actual GEdge
       while (! myEdges.empty()) {
 	std::vector<MEdge> myLines;
 	myLines.clear();
@@ -1077,42 +1077,37 @@ void GModel::createTopologyFromMesh()
 	myEdges.erase(it);
 	it++;
 
-	printf("***candidate mline %d %d of size %d \n", vB->getNum(), vE->getNum(), myEdges.size());
+	//printf("***candidate mline %d %d of size %d \n", vB->getNum(), vE->getNum(), myEdges.size());
 
    	for (int i=0; i<2; i++) {
 
-	  for (std::vector<MEdge>::iterator it = myEdges.begin() ; it != myEdges.end(); it++){
+	  std::vector<MEdge>::iterator it= myEdges.begin() ;
+	  while (it != myEdges.end()){
 	    MVertex *v1 = (*it).getVertex(0);
 	    MVertex *v2 = (*it).getVertex(1);
-	    //printf("mline %d %d size=%d\n", v1->getNum(), v2->getNum(), myEdges.size());
+	    //printf("mline %d %d \n", v1->getNum(), v2->getNum());
 
 	    std::vector<MEdge>::iterator itp;
 	    if ( v1 == vE  ){
 	      //printf("->v1 = vE push back this mline \n");
 	      myLines.push_back(*it);
-	      itp = it;
-	      it++;
-	      myEdges.erase(itp);
+	      myEdges.erase(it);
 	      vE = v2;
 	      i = -1;
 	    }
 	    else if ( v2 == vE){
 	      //printf("->v2 = VE push back this mline \n");
 	      myLines.push_back(*it);
-	      itp = it;
-	      it++;
-	      myEdges.erase(itp);
+	      myEdges.erase(it);
 	      vE = v1;
 	      i=-1;
 	    }
-	    if (it == myEdges.end()) break;
-	  }
-	  printf("end Edges \n");
+	    else it++;
 
-	  if (vB == vE) {
-	    //printf("vB = ve = \n");
-	    break;
 	  }
+	  //printf("end Edges \n");
+
+	  if (vB == vE) break;
 
 	  if (myEdges.empty()) break;
 
@@ -1124,12 +1119,12 @@ void GModel::createTopologyFromMesh()
 
 	}
 
-//  	printf("************ CANDIDATE NEW EDGE with num =%d\n", num);
-//  	for (std::vector<MEdge>::iterator it = myLines.begin() ; it != myLines.end() ; ++it){
-//  	  MVertex *v1 = (*it).getVertex(0);
-//  	  MVertex *v2 = (*it).getVertex(1);
-//  	  printf("Line %d %d \n", v1->getNum(), v2->getNum());
-//  	}
+ 	//printf("************ CANDIDATE NEW EDGE with num =%d size=%d\n", num, myLines.size());
+  	//for (std::vector<MEdge>::iterator it = myLines.begin() ; it != myLines.end() ; ++it){
+  	//  MVertex *v1 = (*it).getVertex(0);
+  	//  MVertex *v2 = (*it).getVertex(1);
+  	//  printf("Line %d %d \n", v1->getNum(), v2->getNum());
+  	//}
 	discreteEdge *e = new discreteEdge(this, num, 0, 0);
 	add(e);
 	Dedges.push_back(e);
diff --git a/benchmarks/stl/falcon1.geo b/benchmarks/stl/falcon1.geo
index 1cea7963e5891bfac8f57a72bbc3f96e4564467b..5c2f8b2809ae30b548c5a8ca7b924bb5b642af54 100644
--- a/benchmarks/stl/falcon1.geo
+++ b/benchmarks/stl/falcon1.geo
@@ -1,5 +1,5 @@
-Merge 'falcon1.stl';
-
+Merge 'falcon1.stl';
+
 Point(201) = {-30.0,30.0,15.0,0.1};
 Point(202) = {-30.0,30.0,-15.0,0.1};
 Point(203) = {0.0,30.0,15.0,0.1};