diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2005-12-07 22:54:52 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2005-12-07 22:54:52 +0300 |
commit | 44c9b42f605a6c9b1ca57de949c524352edf4e25 (patch) | |
tree | 7f90612892828bef3c544b756f2a1a4905a2fb65 /source/blender/src/parametrizer.c | |
parent | 0c60e72cbf78402519d21787c6ce051a9694bdcf (diff) |
Orange: Bugfix for uninitialized variables in lscm/stretch, forgot to
update initialization when switching from MEM_callocN to BLI_memarena.
This should fix the windows crashes.
Patch by Jens, thanks!
Diffstat (limited to 'source/blender/src/parametrizer.c')
-rw-r--r-- | source/blender/src/parametrizer.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/source/blender/src/parametrizer.c b/source/blender/src/parametrizer.c index 9ee7d3f5daf..6d8ede47a0f 100644 --- a/source/blender/src/parametrizer.c +++ b/source/blender/src/parametrizer.c @@ -293,6 +293,7 @@ static PVert *p_vert_add(PChart *chart, PHashKey key, float *co, PEdge *e) v->co = co; v->link.key = key; v->edge = e; + v->flag = 0; phash_insert(chart->verts, (PHashLink*)v); @@ -317,6 +318,7 @@ static PVert *p_vert_copy(PChart *chart, PVert *v) nv->uv[1] = v->uv[1]; nv->link.key = v->link.key; nv->edge = v->edge; + nv->flag = v->flag; phash_insert(chart->verts, (PHashLink*)nv); @@ -666,7 +668,7 @@ static PBool p_edge_has_pair(PChart *chart, PEdge *e, PEdge **pair, PBool impl) static PBool p_edge_connect_pair(PChart *chart, PEdge *e, PEdge ***stack, PBool impl) { - PEdge *pair; + PEdge *pair = NULL; if(!e->pair && p_edge_has_pair(chart, e, &pair, impl)) { if (e->vert == pair->vert) @@ -833,11 +835,15 @@ static PFace *p_face_add(PChart *chart, ParamKey key, ParamKey *vkeys, /* allocate */ f = (PFace*)BLI_memarena_alloc(chart->handle->arena, sizeof *f); + f->flag=0; // init ! e1 = (PEdge*)BLI_memarena_alloc(chart->handle->arena, sizeof *e1); e2 = (PEdge*)BLI_memarena_alloc(chart->handle->arena, sizeof *e2); e3 = (PEdge*)BLI_memarena_alloc(chart->handle->arena, sizeof *e3); + + + /* set up edges */ f->edge = e1; e1->face = e2->face = e3->face = f; @@ -846,6 +852,15 @@ static PFace *p_face_add(PChart *chart, ParamKey key, ParamKey *vkeys, e2->next = e3; e3->next = e1; + e1->pair = NULL; + e2->pair = NULL; + e3->pair = NULL; + + e1->flag =0; + e2->flag =0; + e3->flag =0; + + if (co && uv) { e1->vert = p_vert_lookup(chart, vkeys[i1], co[i1], e1); e2->vert = p_vert_lookup(chart, vkeys[i2], co[i2], e2); @@ -854,6 +869,7 @@ static PFace *p_face_add(PChart *chart, ParamKey key, ParamKey *vkeys, e1->orig_uv = uv[i1]; e2->orig_uv = uv[i2]; e3->orig_uv = uv[i3]; + } else { /* internal call to add face */ |