Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-02-25 13:06:17 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-02-25 13:06:17 +0400
commitb366813e37088e96539bf1f9b76ec8b33cb5cd72 (patch)
treeb1be19dece8e8c4c7e7909c76c3fc83f100b11d4 /source
parentc955272ec52c59bf0e432609b21c40c048fd6e53 (diff)
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.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/font.c6
-rw-r--r--source/blender/bmesh/intern/bmesh_polygon.c4
-rw-r--r--source/blender/bmesh/operators/bmo_connect.c24
-rw-r--r--source/blender/nodes/composite/node_composite_tree.c8
4 files changed, 25 insertions, 17 deletions
diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c
index 0761b8f14c7..f45899ff365 100644
--- a/source/blender/blenkernel/intern/font.c
+++ b/source/blender/blenkernel/intern/font.c
@@ -808,8 +808,10 @@ struct chartrans *BKE_text_to_curve(Main *bmain, Scene *scene, Object *ob, int m
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];
// }
diff --git a/source/blender/bmesh/intern/bmesh_polygon.c b/source/blender/bmesh/intern/bmesh_polygon.c
index 79d229aec1b..19b13a00f6d 100644
--- a/source/blender/bmesh/intern/bmesh_polygon.c
+++ b/source/blender/bmesh/intern/bmesh_polygon.c
@@ -861,13 +861,13 @@ void BM_face_triangulate(BMesh *bm, BMFace *f, float (*projectverts)[3],
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);
diff --git a/source/blender/bmesh/operators/bmo_connect.c b/source/blender/bmesh/operators/bmo_connect.c
index 2beed279f4b..ad15b703041 100644
--- a/source/blender/bmesh/operators/bmo_connect.c
+++ b/source/blender/bmesh/operators/bmo_connect.c
@@ -167,16 +167,20 @@ static void bm_vert_loop_pair(BMesh *bm, BMVert *v1, BMVert *v2, BMLoop **l1, BM
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;
- }
- else if (l->next->v == v2) {
- *l1 = l;
- *l2 = l->next;
- 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;
+ }
}
}
diff --git a/source/blender/nodes/composite/node_composite_tree.c b/source/blender/nodes/composite/node_composite_tree.c
index 52dc364e590..8257b850010 100644
--- a/source/blender/nodes/composite/node_composite_tree.c
+++ b/source/blender/nodes/composite/node_composite_tree.c
@@ -566,10 +566,12 @@ void ntreeCompositExecTree(bNodeTree *ntree, RenderData *rd, int do_preview)
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);