[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34301] trunk/blender/source/blender/ editors/mesh: Bugfix #25614

Ton Roosendaal ton at blender.org
Thu Jan 13 20:01:28 CET 2011


Revision: 34301
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=34301
Author:   ton
Date:     2011-01-13 19:01:27 +0000 (Thu, 13 Jan 2011)
Log Message:
-----------
Bugfix #25614

Reporter saw weird fgons and edge creases on spin-mesh.

Appeared that the edge-flag copying code happened after
freeing edges. Already since May 2007 or so... weird!

Also in this commit a couple of simple cleanups.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/mesh/editmesh.c
    trunk/blender/source/blender/editors/mesh/editmesh_lib.c

Modified: trunk/blender/source/blender/editors/mesh/editmesh.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh.c	2011-01-13 16:00:14 UTC (rev 34300)
+++ trunk/blender/source/blender/editors/mesh/editmesh.c	2011-01-13 19:01:27 UTC (rev 34301)
@@ -259,7 +259,7 @@
 			eed->h |= (example->h & EM_FGON);
 		}
 	}
-
+	
 	return eed;
 }
 

Modified: trunk/blender/source/blender/editors/mesh/editmesh_lib.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_lib.c	2011-01-13 16:00:14 UTC (rev 34300)
+++ trunk/blender/source/blender/editors/mesh/editmesh_lib.c	2011-01-13 19:01:27 UTC (rev 34301)
@@ -1637,10 +1637,10 @@
 			VECCOPY(v1->co, eve->co);
 			VECCOPY(v1->no, eve->no);
 			v1->f= eve->f;
-			eve->f-= flag;
+			eve->f &= ~flag;
 			eve->tmp.v = v1;
 		}
-		else eve->tmp.v = 0;
+		else eve->tmp.v = NULL;
 		eve= eve->prev;
 	}
 
@@ -1698,17 +1698,7 @@
 
 		eed= nexted;
 	}
-	if(del_old) {
-		eed= em->edges.first;
-		while(eed) {
-			nexted= eed->next;
-			if(eed->f2==3 && eed->f1==1) {
-				remedge(em, eed);
-				free_editedge(em, eed);
-			}
-			eed= nexted;
-		}
-	}
+	
 	/* duplicate faces, if necessary remove old ones  */
 	efa= em->faces.first;
 	while(efa) {
@@ -1721,7 +1711,7 @@
 			if(efa->v4) 
 				v4 = efa->v4->tmp.v; 
 			else
-				v4= 0;
+				v4= NULL;
 
 			/* hmm .. not sure about edges here */
 			if(del_old==0)	// if we keep old, we flip normal
@@ -1739,6 +1729,18 @@
 		}
 		efa= nextvl;
 	}
+	/* delete edges after copying edges above! */
+	if(del_old) {
+		eed= em->edges.first;
+		while(eed) {
+			nexted= eed->next;
+			if(eed->f2==3 && eed->f1==1) {
+				remedge(em, eed);
+				free_editedge(em, eed);
+			}
+			eed= nexted;
+		}
+	}
 	
 	normalize_v3(nor);	// for grab
 	
@@ -1824,7 +1826,7 @@
 	EditVert *v1= addvertlist(em, eve->co, eve);
 	
 	v1->f= eve->f;
-	eve->f-= flag;
+	eve->f &= ~flag;
 	eve->f|= 128;
 	
 	eve->tmp.v = v1;
@@ -1863,7 +1865,7 @@
 			newed= addedgelist(em, v1, v2, eed);
 			
 			newed->f= eed->f;
-			eed->f -= flag;
+			eed->f &= ~flag;
 			eed->f |= 128;
 		}
 	}
@@ -1890,7 +1892,7 @@
 			}
 			
 			newfa->f= efa->f;
-			efa->f -= flag;
+			efa->f &= ~flag;
 			efa->f |= 128;
 		}
 	}




More information about the Bf-blender-cvs mailing list