From fd4ff9ddd040901f006a84d7f1797bdb2f1b4912 Mon Sep 17 00:00:00 2001 From: Kostyantyn Vorobyov <k.a.vorobyov@gmail.com> Date: Tue, 29 Mar 2016 18:03:48 +0200 Subject: [PATCH] Rebase --- .../e-acsl/bittree_model/e_acsl_bittree.h | 30 +++++-------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_bittree.h b/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_bittree.h index 989a640c1e9..b580762fd5b 100644 --- a/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_bittree.h +++ b/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_bittree.h @@ -355,34 +355,19 @@ static struct _block * get_cont (void * ptr) { struct bittree * tmp = __root; if(__root == NULL || ptr == NULL) return NULL; - struct bittree * t [WORDBITS]; - short ind = -1; + struct bittree * other_choice = NULL; while(1) { if(tmp->is_leaf) { /* tmp cannot contain ptr because its begin addr is higher */ - if(tmp->addr > (size_t)ptr) { - if(ind == -1) - return NULL; - else { - tmp = t[ind]; - ind--; - continue; - } - } + if(tmp->addr > (size_t)ptr) return NULL; /* tmp->addr <= ptr, tmp may contain ptr ptr is contained if tmp is large enough (begin addr + size) */ else if((size_t)ptr < tmp->leaf->size + tmp->addr || (tmp->leaf->size == 0 && (size_t)ptr == tmp->leaf->ptr)) return tmp->leaf; /* tmp->addr <= ptr, but tmp->addr is not large enough */ - else if (ind == -1) - return NULL; - else { - tmp = t[ind]; - ind--; - continue; - } + else return NULL; } assert(tmp->left != NULL && tmp->right != NULL); @@ -390,19 +375,18 @@ static struct _block * get_cont (void * ptr) { /* the right child has the highest address, so we test it first */ if(((size_t)tmp->right->addr & tmp->right->mask) <= ((size_t)ptr & tmp->right->mask)) { - ind++; - t[ind] = tmp->left; + other_choice = tmp->left; tmp = tmp->right; } else if(((size_t)tmp->left->addr & tmp->left->mask) <= ((size_t)ptr & tmp->left->mask)) tmp = tmp->left; else { - if(ind == -1) + if(other_choice == NULL) return NULL; else { - tmp = t[ind]; - ind--; + tmp = other_choice; + other_choice = NULL; } } } -- GitLab