diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-01-16 10:20:55 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-01-16 10:20:55 +0100 |
| commit | 50242c6eaa8242dcefda034c555ad9496d3c9412 (patch) | |
| tree | 92cd81edda992b11da08d14abffcc43801b2965f /src | |
| parent | e5649d90e7deb3e7388475d62f4174b4bd64063f (diff) | |
| download | box64-50242c6eaa8242dcefda034c555ad9496d3c9412.tar.gz box64-50242c6eaa8242dcefda034c555ad9496d3c9412.zip | |
Ficxed an issue with rbtree rb_get_end utility function
Diffstat (limited to 'src')
| -rw-r--r-- | src/tools/rbtree.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/tools/rbtree.c b/src/tools/rbtree.c index 12adcd16..1fa08b71 100644 --- a/src/tools/rbtree.c +++ b/src/tools/rbtree.c @@ -568,12 +568,13 @@ uint32_t rb_get(rbtree *tree, uintptr_t addr) { int rb_get_end(rbtree* tree, uintptr_t addr, uint32_t* val, uintptr_t* end) { rbnode *node = tree->root, *next = NULL; while (node) { - if (node->end <= addr) { - node = node->right; - } else if (node->start <= addr) { + if ((node->start <= addr) && (node->end > addr)) { *val = node->data; *end = node->end; return 1; + } + if (node->end <= addr) { + node = node->right; } else { next = node; node = node->left; |