From 05242bb1d3badf5e71b2e5d6464dfbd53b3b39b3 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Mon, 13 Jan 2014 16:05:13 +0100 Subject: Make fz_tree_lookup iterative rather than recursive. --- source/fitz/tree.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'source') diff --git a/source/fitz/tree.c b/source/fitz/tree.c index dd5edc23..ca94a45b 100644 --- a/source/fitz/tree.c +++ b/source/fitz/tree.c @@ -24,15 +24,18 @@ static fz_tree *fz_tree_new_node(fz_context *ctx, const char *key, void *value) void *fz_tree_lookup(fz_context *ctx, fz_tree *node, const char *key) { - if (node && node != &sentinel) + if (node) { - int c = strcmp(key, node->key); - if (c == 0) - return node->value; - else if (c < 0) - return fz_tree_lookup(ctx, node->left, key); - else - return fz_tree_lookup(ctx, node->right, key); + while (node != &sentinel) + { + int c = strcmp(key, node->key); + if (c == 0) + return node->value; + else if (c < 0) + node = node->left; + else + node = node->right; + } } return NULL; } -- cgit v1.2.3