From f9f04726e5a4387d89edb3f067f6f0e4dff58a28 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 6 Feb 2015 15:31:08 +1100 Subject: GHash: no need to malloc iterators --- source/blender/editors/curve/editcurve.c | 15 +++++---------- source/blender/editors/sculpt_paint/sculpt_uv.c | 16 +++++----------- source/blender/editors/space_text/text_autocomplete.c | 8 +++----- source/blender/editors/uvedit/uvedit_smart_stitch.c | 11 ++++------- 4 files changed, 17 insertions(+), 33 deletions(-) (limited to 'source/blender/editors') diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 51c621cbf19..4aeeaa87269 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -643,25 +643,20 @@ static void keyData_switchDirectionNurb(Curve *cu, Nurb *nu) static GHash *dupli_keyIndexHash(GHash *keyindex) { GHash *gh; - GHashIterator *hashIter; + GHashIterator gh_iter; gh = BLI_ghash_ptr_new_ex("dupli_keyIndex gh", BLI_ghash_size(keyindex)); - for (hashIter = BLI_ghashIterator_new(keyindex); - BLI_ghashIterator_done(hashIter) == false; - BLI_ghashIterator_step(hashIter)) - { - void *cv = BLI_ghashIterator_getKey(hashIter); - CVKeyIndex *index = BLI_ghashIterator_getValue(hashIter); - CVKeyIndex *newIndex = MEM_callocN(sizeof(CVKeyIndex), "dupli_keyIndexHash index"); + GHASH_ITER (gh_iter, keyindex) { + void *cv = BLI_ghashIterator_getKey(&gh_iter); + CVKeyIndex *index = BLI_ghashIterator_getValue(&gh_iter); + CVKeyIndex *newIndex = MEM_mallocN(sizeof(CVKeyIndex), "dupli_keyIndexHash index"); memcpy(newIndex, index, sizeof(CVKeyIndex)); BLI_ghash_insert(gh, cv, newIndex); } - BLI_ghashIterator_free(hashIter); - return gh; } diff --git a/source/blender/editors/sculpt_paint/sculpt_uv.c b/source/blender/editors/sculpt_paint/sculpt_uv.c index 23bc4a483d3..a9feb9f48de 100644 --- a/source/blender/editors/sculpt_paint/sculpt_uv.c +++ b/source/blender/editors/sculpt_paint/sculpt_uv.c @@ -598,7 +598,7 @@ static UvSculptData *uv_sculpt_stroke_init(bContext *C, wmOperator *op, const wm UvEdge *edges; GHash *edgeHash; - GHashIterator *ghi; + GHashIterator gh_iter; bool do_island_optimization = !(ts->uv_sculpt_settings & UV_SCULPT_ALL_ISLANDS); int island_index = 0; @@ -754,21 +754,15 @@ static UvSculptData *uv_sculpt_stroke_init(bContext *C, wmOperator *op, const wm uv_sculpt_stroke_exit(C, op); return NULL; } - ghi = BLI_ghashIterator_new(edgeHash); - if (!ghi) { - BLI_ghash_free(edgeHash, NULL, NULL); - MEM_freeN(edges); - uv_sculpt_stroke_exit(C, op); - return NULL; - } + /* fill the edges with data */ - for (i = 0; !BLI_ghashIterator_done(ghi); BLI_ghashIterator_step(ghi)) { - data->uvedges[i++] = *((UvEdge *)BLI_ghashIterator_getKey(ghi)); + i = 0; + GHASH_ITER (gh_iter, edgeHash) { + data->uvedges[i++] = *((UvEdge *)BLI_ghashIterator_getKey(&gh_iter)); } data->totalUvEdges = BLI_ghash_size(edgeHash); /* cleanup temporary stuff */ - BLI_ghashIterator_free(ghi); BLI_ghash_free(edgeHash, NULL, NULL); MEM_freeN(edges); diff --git a/source/blender/editors/space_text/text_autocomplete.c b/source/blender/editors/space_text/text_autocomplete.c index 19af71c9139..1637ae14892 100644 --- a/source/blender/editors/space_text/text_autocomplete.c +++ b/source/blender/editors/space_text/text_autocomplete.c @@ -207,18 +207,16 @@ static GHash *text_autocomplete_build(Text *text) } { - GHashIterator *iter = BLI_ghashIterator_new(gh); + GHashIterator gh_iter; /* get the formatter for highlighting */ TextFormatType *tft; tft = ED_text_format_get(text); - for (; !BLI_ghashIterator_done(iter); BLI_ghashIterator_step(iter)) { - const char *s = BLI_ghashIterator_getValue(iter); + GHASH_ITER (gh_iter, gh) { + const char *s = BLI_ghashIterator_getValue(&gh_iter); texttool_suggest_add(s, tft->format_identifier(s)); } - BLI_ghashIterator_free(iter); - } } diff --git a/source/blender/editors/uvedit/uvedit_smart_stitch.c b/source/blender/editors/uvedit/uvedit_smart_stitch.c index c5931cf2943..4cb1f8943f9 100644 --- a/source/blender/editors/uvedit/uvedit_smart_stitch.c +++ b/source/blender/editors/uvedit/uvedit_smart_stitch.c @@ -1601,7 +1601,7 @@ static int stitch_init(bContext *C, wmOperator *op) BMFace *efa; BMLoop *l; BMIter iter, liter; - GHashIterator *ghi; + GHashIterator gh_iter; UvEdge *all_edges; StitchState *state; Scene *scene = CTX_data_scene(C); @@ -1748,14 +1748,11 @@ static int stitch_init(bContext *C, wmOperator *op) } } - - ghi = BLI_ghashIterator_new(edge_hash); total_edges = BLI_ghash_size(edge_hash); state->edges = edges = MEM_mallocN(sizeof(*edges) * total_edges, "stitch_edges"); /* I assume any system will be able to at least allocate an iterator :p */ if (!edges) { - BLI_ghashIterator_free(ghi); state_delete(state); return 0; } @@ -1763,12 +1760,12 @@ static int stitch_init(bContext *C, wmOperator *op) state->total_separate_edges = total_edges; /* fill the edges with data */ - for (i = 0, BLI_ghashIterator_init(ghi, edge_hash); !BLI_ghashIterator_done(ghi); BLI_ghashIterator_step(ghi)) { - edges[i++] = *((UvEdge *)BLI_ghashIterator_getKey(ghi)); + i = 0; + GHASH_ITER (gh_iter, edge_hash) { + edges[i++] = *((UvEdge *)BLI_ghashIterator_getKey(&gh_iter)); } /* cleanup temporary stuff */ - BLI_ghashIterator_free(ghi); MEM_freeN(all_edges); BLI_ghash_free(edge_hash, NULL, NULL); -- cgit v1.2.3