From d3f84b4fcd5b8dabb2f36cd4a0d38cef7030f269 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Sun, 18 Mar 2007 23:02:26 +0000
Subject: [PATCH] bug: fixed nasty double free in GEdge destructor

---
 Geo/GEdge.cpp  | 5 ++---
 Geo/GModel.cpp | 3 ++-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/Geo/GEdge.cpp b/Geo/GEdge.cpp
index 8c43b0db86..f7ae18bdcd 100644
--- a/Geo/GEdge.cpp
+++ b/Geo/GEdge.cpp
@@ -1,4 +1,4 @@
-// $Id: GEdge.cpp,v 1.24 2007-03-09 14:57:06 remacle Exp $
+// $Id: GEdge.cpp,v 1.25 2007-03-18 23:02:26 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -36,7 +36,7 @@ GEdge::GEdge(GModel *model, int tag, GVertex *_v0, GVertex *_v1)
 GEdge::~GEdge() 
 {
   if(v0) v0->delEdge(this);
-  if(v1) v1->delEdge(this);
+  if(v1 && v1 != v0) v1->delEdge(this);
 
   for(unsigned int i = 0; i < mesh_vertices.size(); i++) 
     delete mesh_vertices[i];
@@ -132,7 +132,6 @@ SPoint2 GEdge::reparamOnFace(GFace *face, double epar,int dir) const
   return face->parFromPoint(sp3);
 }
 
-
 double GEdge::curvature(double par) const 
 {
   double eps1 = 1.e-3;
diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp
index de4deaf3a0..5f79b9b2fa 100644
--- a/Geo/GModel.cpp
+++ b/Geo/GModel.cpp
@@ -1,4 +1,4 @@
-// $Id: GModel.cpp,v 1.35 2007-03-02 08:44:55 geuzaine Exp $
+// $Id: GModel.cpp,v 1.36 2007-03-18 23:02:26 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -45,6 +45,7 @@ void GModel::destroy()
   gmshSurface::reset();
   Attractor::reset();
 }
+
 GRegion * GModel::regionByTag(int n) const
 {
   GEntity tmp((GModel*)this, n);
-- 
GitLab