Revision: 44423
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44423
Author:   campbellbarton
Date:     2012-02-25 09:06:17 +0000 (Sat, 25 Feb 2012)
Log Message:
-----------
bugfix
* ntreeCompositExecTree accessed 'ntree' before NULL check.
* BM_face_triangulate accessed 'f' before NULL check.

also quiet warning in BKE_text_to_curve() and add a check for BMesh bridge 
loops so it knows quicker if it can copy loop data or not.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/font.c
    trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c
    trunk/blender/source/blender/bmesh/operators/bmo_connect.c
    trunk/blender/source/blender/nodes/composite/node_composite_tree.c

Modified: trunk/blender/source/blender/blenkernel/intern/font.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/font.c       2012-02-25 
09:02:05 UTC (rev 44422)
+++ trunk/blender/source/blender/blenkernel/intern/font.c       2012-02-25 
09:06:17 UTC (rev 44423)
@@ -808,8 +808,10 @@
                                if(linedata2[i]>1)
                                        linedata[i]= 
(linedata3[i]-linedata[i])/(linedata2[i]-1);
                        for (i=0; i<=slen; i++) {
-                               for (j=i; (mem[j]) && (mem[j]!='\n') && 
-                                                 (mem[j]!='\r') && 
(chartransdata[j].dobreak==0) && (j<slen); j++);
+                               for (j=i; (!ELEM3(mem[j], '\0', '\n', '\r')) && 
(chartransdata[j].dobreak == 0) && (j < slen); j++) {
+                                       /* do nothing */
+                               }
+
 //                             if ((mem[j]!='\r') && (mem[j]!='\n') && 
(mem[j])) {
                                        ct->xof+= 
ct->charnr*linedata[ct->linenr];
 //                             }

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c   2012-02-25 
09:02:05 UTC (rev 44422)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c   2012-02-25 
09:06:17 UTC (rev 44423)
@@ -861,13 +861,13 @@
                        f = BM_face_split(bm, l_iter->f, l_iter->prev->v,
                                          l_iter->next->v,
                                          &newl, NULL);
-                       copy_v3_v3(f->no, l_iter->f->no);
 
-                       if (!f) {
+                       if (UNLIKELY(!f)) {
                                fprintf(stderr, "%s: triangulator failed to 
split face! (bmesh internal error)\n", __func__);
                                break;
                        }
 
+                       copy_v3_v3(f->no, l_iter->f->no);
                        BMO_elem_flag_enable(bm, newl->e, newedge_oflag);
                        BMO_elem_flag_enable(bm, f, newface_oflag);
                        

Modified: trunk/blender/source/blender/bmesh/operators/bmo_connect.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_connect.c  2012-02-25 
09:02:05 UTC (rev 44422)
+++ trunk/blender/source/blender/bmesh/operators/bmo_connect.c  2012-02-25 
09:06:17 UTC (rev 44423)
@@ -167,17 +167,21 @@
        BMIter liter;
        BMLoop *l;
 
-       BM_ITER(l, &liter, bm, BM_LOOPS_OF_VERT, v1) {
-               if (l->prev->v == v2) {
-                       *l1 = l;
-                       *l2 = l->prev;
-                       return;
+       if ((v1->e && v1->e->l) &&
+           (v2->e && v2->e->l))
+       {
+               BM_ITER(l, &liter, bm, BM_LOOPS_OF_VERT, v1) {
+                       if (l->prev->v == v2) {
+                               *l1 = l;
+                               *l2 = l->prev;
+                               return;
+                       }
+                       else if (l->next->v == v2) {
+                               *l1 = l;
+                               *l2 = l->next;
+                               return;
+                       }
                }
-               else if (l->next->v == v2) {
-                       *l1 = l;
-                       *l2 = l->next;
-                       return;
-               }
        }
 
        /* fallback to _any_ loop */

Modified: trunk/blender/source/blender/nodes/composite/node_composite_tree.c
===================================================================
--- trunk/blender/source/blender/nodes/composite/node_composite_tree.c  
2012-02-25 09:02:05 UTC (rev 44422)
+++ trunk/blender/source/blender/nodes/composite/node_composite_tree.c  
2012-02-25 09:06:17 UTC (rev 44423)
@@ -566,10 +566,12 @@
        ListBase threads;
        ThreadData thdata;
        int totnode, curnode, rendering= 1, n;
-       bNodeTreeExec *exec= ntree->execdata;
-       
+       bNodeTreeExec *exec;
+
        if(ntree==NULL) return;
-       
+
+       exec = ntree->execdata;
+
        if(do_preview)
                ntreeInitPreview(ntree, 0, 0);
        

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to