Revision: 45352
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45352
Author:   campbellbarton
Date:     2012-04-03 00:28:38 +0000 (Tue, 03 Apr 2012)
Log Message:
-----------
bmesh iterators were passing the BMesh as data argument to BM_iter_new(), 
harmless but incorrect.
replace these cases with iterator macro.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_construct.c
    trunk/blender/source/blender/bmesh/intern/bmesh_marking.c
    trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c
    trunk/blender/source/blender/bmesh/intern/bmesh_operators.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_construct.c 2012-04-02 
23:17:56 UTC (rev 45351)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_construct.c 2012-04-03 
00:28:38 UTC (rev 45352)
@@ -532,18 +532,19 @@
        BMEdge *e;
        BMFace *f;
 
-       BMIter verts;
-       BMIter edges;
-       BMIter faces;
+       BMIter iter;
+       BMIter itersub;
 
-       for (v = BM_iter_new(&verts, bm, BM_VERTS_OF_MESH, bm); v; v = 
BM_iter_step(&verts)) {
+       BM_ITER(v, &iter, bm, BM_VERTS_OF_MESH, NULL) {
                if (BMO_elem_flag_test(bm, v, oflag)) {
                        /* Visit edge */
-                       for (e = BM_iter_new(&edges, bm, BM_EDGES_OF_VERT, v); 
e; e = BM_iter_step(&edges))
+                       BM_ITER(e, &itersub, bm, BM_EDGES_OF_VERT, v) {
                                BMO_elem_flag_enable(bm, e, oflag);
+                       }
                        /* Visit face */
-                       for (f = BM_iter_new(&faces, bm, BM_FACES_OF_VERT, v); 
f; f = BM_iter_step(&faces))
+                       BM_ITER(f, &itersub, bm, BM_FACES_OF_VERT, v) {
                                BMO_elem_flag_enable(bm, f, oflag);
+                       }
                }
        }
 
@@ -557,12 +558,12 @@
        BMEdge *e;
        BMFace *f;
 
-       BMIter edges;
-       BMIter faces;
+       BMIter iter;
+       BMIter itersub;
 
-       for (e = BM_iter_new(&edges, bm, BM_EDGES_OF_MESH, bm); e; e = 
BM_iter_step(&edges)) {
+       BM_ITER(e, &iter, bm, BM_EDGES_OF_MESH, NULL) {
                if (BMO_elem_flag_test(bm, e, oflag)) {
-                       for (f = BM_iter_new(&faces, bm, BM_FACES_OF_EDGE, e); 
f; f = BM_iter_step(&faces)) {
+                       BM_ITER(f, &itersub, bm, BM_FACES_OF_EDGE, e) {
                                BMO_elem_flag_enable(bm, f, oflag);
                        }
                }
@@ -585,9 +586,9 @@
        BMEdge *e;
        BMFace *f;
 
-       BMIter verts;
-       BMIter edges;
-       BMIter faces;
+       BMIter viter;
+       BMIter eiter;
+       BMIter fiter;
 
        switch (type) {
                case DEL_VERTS:
@@ -599,7 +600,7 @@
                case DEL_EDGES:
                {
                        /* flush down to vert */
-                       for (e = BM_iter_new(&edges, bm, BM_EDGES_OF_MESH, bm); 
e; e = BM_iter_step(&edges)) {
+                       BM_ITER(e, &eiter, bm, BM_EDGES_OF_MESH, NULL) {
                                if (BMO_elem_flag_test(bm, e, oflag)) {
                                        BMO_elem_flag_enable(bm, e->v1, oflag);
                                        BMO_elem_flag_enable(bm, e->v2, oflag);
@@ -607,7 +608,7 @@
                        }
                        bmo_remove_tagged_context_edges(bm, oflag);
                        /* remove loose vertice */
-                       for (v = BM_iter_new(&verts, bm, BM_VERTS_OF_MESH, bm); 
v; v = BM_iter_step(&verts)) {
+                       BM_ITER(v, &viter, bm, BM_VERTS_OF_MESH, NULL) {
                                if (BMO_elem_flag_test(bm, v, oflag) && 
(!(v->e)))
                                        BMO_elem_flag_enable(bm, v, 
DEL_WIREVERT);
                        }
@@ -638,27 +639,27 @@
                case DEL_FACES:
                {
                        /* go through and mark all edges and all verts of all 
faces for delet */
-                       for (f = BM_iter_new(&faces, bm, BM_FACES_OF_MESH, bm); 
f; f = BM_iter_step(&faces)) {
+                       BM_ITER(f, &fiter, bm, BM_FACES_OF_MESH, NULL) {
                                if (BMO_elem_flag_test(bm, f, oflag)) {
-                                       for (e = BM_iter_new(&edges, bm, 
BM_EDGES_OF_FACE, f); e; e = BM_iter_step(&edges))
+                                       for (e = BM_iter_new(&eiter, bm, 
BM_EDGES_OF_FACE, f); e; e = BM_iter_step(&eiter))
                                                BMO_elem_flag_enable(bm, e, 
oflag);
-                                       for (v = BM_iter_new(&verts, bm, 
BM_VERTS_OF_FACE, f); v; v = BM_iter_step(&verts))
+                                       for (v = BM_iter_new(&viter, bm, 
BM_VERTS_OF_FACE, f); v; v = BM_iter_step(&viter))
                                                BMO_elem_flag_enable(bm, v, 
oflag);
                                }
                        }
                        /* now go through and mark all remaining faces all 
edges for keeping */
-                       for (f = BM_iter_new(&faces, bm, BM_FACES_OF_MESH, bm); 
f; f = BM_iter_step(&faces)) {
+                       BM_ITER(f, &fiter, bm, BM_FACES_OF_MESH, NULL) {
                                if (!BMO_elem_flag_test(bm, f, oflag)) {
-                                       for (e = BM_iter_new(&edges, bm, 
BM_EDGES_OF_FACE, f); e; e = BM_iter_step(&edges)) {
+                                       for (e = BM_iter_new(&eiter, bm, 
BM_EDGES_OF_FACE, f); e; e = BM_iter_step(&eiter)) {
                                                BMO_elem_flag_disable(bm, e, 
oflag);
                                        }
-                                       for (v = BM_iter_new(&verts, bm, 
BM_VERTS_OF_FACE, f); v; v = BM_iter_step(&verts)) {
+                                       for (v = BM_iter_new(&viter, bm, 
BM_VERTS_OF_FACE, f); v; v = BM_iter_step(&viter)) {
                                                BMO_elem_flag_disable(bm, v, 
oflag);
                                        }
                                }
                        }
                        /* also mark all the vertices of remaining edges for 
keeping */
-                       for (e = BM_iter_new(&edges, bm, BM_EDGES_OF_MESH, bm); 
e; e = BM_iter_step(&edges)) {
+                       BM_ITER(e, &eiter, bm, BM_EDGES_OF_MESH, NULL) {
                                if (!BMO_elem_flag_test(bm, e, oflag)) {
                                        BMO_elem_flag_disable(bm, e->v1, oflag);
                                        BMO_elem_flag_disable(bm, e->v2, oflag);
@@ -676,12 +677,15 @@
                case DEL_ALL:
                {
                        /* does this option even belong in here? */
-                       for (f = BM_iter_new(&faces, bm, BM_FACES_OF_MESH, bm); 
f; f = BM_iter_step(&faces))
+                       BM_ITER(f, &fiter, bm, BM_FACES_OF_MESH, NULL) {
                                BMO_elem_flag_enable(bm, f, oflag);
-                       for (e = BM_iter_new(&edges, bm, BM_EDGES_OF_MESH, bm); 
e; e = BM_iter_step(&edges))
+                       }
+                       BM_ITER(e, &eiter, bm, BM_EDGES_OF_MESH, NULL) {
                                BMO_elem_flag_enable(bm, e, oflag);
-                       for (v = BM_iter_new(&verts, bm, BM_VERTS_OF_MESH, bm); 
v; v = BM_iter_step(&verts))
+                       }
+                       BM_ITER(v, &viter, bm, BM_VERTS_OF_MESH, NULL) {
                                BMO_elem_flag_enable(bm, v, oflag);
+                       }
 
                        BMO_remove_tagged_faces(bm, oflag);
                        BMO_remove_tagged_edges(bm, oflag);

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_marking.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_marking.c   2012-04-02 
23:17:56 UTC (rev 45351)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_marking.c   2012-04-03 
00:28:38 UTC (rev 45352)
@@ -78,13 +78,13 @@
        BMLoop *l_first;
        BMFace *f;
 
-       BMIter edges;
-       BMIter faces;
+       BMIter eiter;
+       BMIter fiter;
 
        int ok;
 
        if (bm->selectmode & SCE_SELECT_VERTEX) {
-               for (e = BM_iter_new(&edges, bm, BM_EDGES_OF_MESH, bm); e; e = 
BM_iter_step(&edges)) {
+               BM_ITER(e, &eiter, bm, BM_EDGES_OF_MESH, NULL) {
                        if (BM_elem_flag_test(e->v1, BM_ELEM_SELECT) &&
                            BM_elem_flag_test(e->v2, BM_ELEM_SELECT) &&
                            !BM_elem_flag_test(e, BM_ELEM_HIDDEN))
@@ -95,7 +95,7 @@
                                BM_elem_flag_disable(e, BM_ELEM_SELECT);
                        }
                }
-               for (f = BM_iter_new(&faces, bm, BM_FACES_OF_MESH, bm); f; f = 
BM_iter_step(&faces)) {
+               BM_ITER(f, &fiter, bm, BM_FACES_OF_MESH, NULL) {
                        ok = TRUE;
                        if (!BM_elem_flag_test(f, BM_ELEM_HIDDEN)) {
                                l_iter = l_first = BM_FACE_FIRST_LOOP(f);
@@ -114,7 +114,7 @@
                }
        }
        else if (bm->selectmode & SCE_SELECT_EDGE) {
-               for (f = BM_iter_new(&faces, bm, BM_FACES_OF_MESH, bm); f; f = 
BM_iter_step(&faces)) {
+               BM_ITER(f, &fiter, bm, BM_FACES_OF_MESH, NULL) {
                        ok = TRUE;
                        if (!BM_elem_flag_test(f, BM_ELEM_HIDDEN)) {
                                l_iter = l_first = BM_FACE_FIRST_LOOP(f);
@@ -149,12 +149,12 @@
        BMLoop *l_first;
        BMFace *f;
 
-       BMIter edges;
-       BMIter faces;
+       BMIter eiter;
+       BMIter fiter;
 
        int ok;
 
-       for (e = BM_iter_new(&edges, bm, BM_EDGES_OF_MESH, bm); e; e = 
BM_iter_step(&edges)) {
+       BM_ITER(e, &eiter, bm, BM_EDGES_OF_MESH, NULL) {
                if (!(BM_elem_flag_test(e->v1, BM_ELEM_SELECT) &&
                      BM_elem_flag_test(e->v2, BM_ELEM_SELECT) &&
                      !BM_elem_flag_test(e, BM_ELEM_HIDDEN)))
@@ -163,7 +163,7 @@
                }
        }
 
-       for (f = BM_iter_new(&faces, bm, BM_FACES_OF_MESH, bm); f; f = 
BM_iter_step(&faces)) {
+       BM_ITER(f, &fiter, bm, BM_FACES_OF_MESH, NULL) {
                ok = TRUE;
                if (!BM_elem_flag_test(f, BM_ELEM_HIDDEN)) {
                        l_iter = l_first = BM_FACE_FIRST_LOOP(f);
@@ -200,12 +200,12 @@
        BMLoop *l_first;
        BMFace *f;
 
-       BMIter edges;
-       BMIter faces;
+       BMIter eiter;
+       BMIter fiter;
 
        int ok;
 
-       for (e = BM_iter_new(&edges, bm, BM_EDGES_OF_MESH, bm); e; e = 
BM_iter_step(&edges)) {
+       BM_ITER(e, &eiter, bm, BM_EDGES_OF_MESH, NULL) {
                if (BM_elem_flag_test(e->v1, BM_ELEM_SELECT) &&
                    BM_elem_flag_test(e->v2, BM_ELEM_SELECT) &&
                    !BM_elem_flag_test(e, BM_ELEM_HIDDEN))
@@ -214,7 +214,7 @@
                }
        }
 
-       for (f = BM_iter_new(&faces, bm, BM_FACES_OF_MESH, bm); f; f = 
BM_iter_step(&faces)) {
+       BM_ITER(f, &fiter, bm, BM_FACES_OF_MESH, NULL) {
                ok = TRUE;
                if (!BM_elem_flag_test(f, BM_ELEM_HIDDEN)) {
                        l_iter = l_first = BM_FACE_FIRST_LOOP(f);

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c      2012-04-02 
23:17:56 UTC (rev 45351)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c      2012-04-03 
00:28:38 UTC (rev 45352)
@@ -101,20 +101,18 @@
        BMFace *f;
        
 
-       BMIter verts;
-       BMIter edges;
-       BMIter faces;
-       BMIter loops;
+       BMIter iter;
+       BMIter itersub;
        
-       for (v = BM_iter_new(&verts, bm, BM_VERTS_OF_MESH, bm); v; v = 
BM_iter_step(&verts)) {
+       BM_ITER(v, &iter, bm, BM_VERTS_OF_MESH, NULL) {
                CustomData_bmesh_free_block(&(bm->vdata), &(v->head.data));
        }
-       for (e = BM_iter_new(&edges, bm, BM_EDGES_OF_MESH, bm); e; e = 
BM_iter_step(&edges)) {
+       BM_ITER(e, &iter, bm, BM_EDGES_OF_MESH, NULL) {
                CustomData_bmesh_free_block(&(bm->edata), &(e->head.data));
        }
-       for (f = BM_iter_new(&faces, bm, BM_FACES_OF_MESH, bm); f; f = 
BM_iter_step(&faces)) {
+       BM_ITER(f, &iter, bm, BM_FACES_OF_MESH, NULL) {
                CustomData_bmesh_free_block(&(bm->pdata), &(f->head.data));
-               for (l = BM_iter_new(&loops, bm, BM_LOOPS_OF_FACE, f); l; l = 
BM_iter_step(&loops)) {
+               BM_ITER(l, &itersub, bm, BM_LOOPS_OF_FACE, f) {
                        CustomData_bmesh_free_block(&(bm->ldata), 
&(l->head.data));
                }
        }

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_operators.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_operators.c 2012-04-02 
23:17:56 UTC (rev 45351)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_operators.c 2012-04-03 
00:28:38 UTC (rev 45352)
@@ -646,8 +646,6 @@
  */
 static void BMO_slot_buffer_from_all(BMesh *bm, BMOperator *op, const char 
*slotname, const char htype)
 {
-       BMIter elements;
-       BMHeader *e;
        BMOpSlot *output = BMO_slot_get(op, slotname);
        int totelement = 0, i = 0;
        
@@ -656,25 +654,30 @@
        if (htype & BM_FACE) totelement += bm->totface;
 
        if (totelement) {
+               BMIter iter;
+               BMHeader *ele;
+
                bmo_slot_buffer_alloc(op, slotname, totelement);
 
+               /* TODO - collapse these loops into one */
+
                if (htype & BM_VERT) {
-                       for (e = BM_iter_new(&elements, bm, BM_VERTS_OF_MESH, 
bm); e; e = BM_iter_step(&elements)) {
-                               ((BMHeader **)output->data.p)[i] = e;
+                       BM_ITER(ele, &iter, bm, BM_VERTS_OF_MESH, NULL) {
+                               ((BMHeader **)output->data.p)[i] = ele;
                                i++;
                        }
                }
 
                if (htype & BM_EDGE) {
-                       for (e = BM_iter_new(&elements, bm, BM_EDGES_OF_MESH, 
bm); e; e = BM_iter_step(&elements)) {
-                               ((BMHeader **)output->data.p)[i] = e;

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to