diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/regions.c | 3 | ||||
| -rw-r--r-- | src/sp_tree.c | 5 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/regions.c b/src/regions.c index 4d82420..9849ba8 100644 --- a/src/regions.c +++ b/src/regions.c @@ -374,6 +374,9 @@ struct mem_region *find_first_region(struct mem_region_root *r) /* get used region with smallest address, likely also close to the start * of the linked list */ struct mem_region *m = find_closest_used_region(r, 0); + if (!m) + return NULL; + while (m->prev) { m = m->prev; } diff --git a/src/sp_tree.c b/src/sp_tree.c index 23f707b..5166cc3 100644 --- a/src/sp_tree.c +++ b/src/sp_tree.c @@ -12,6 +12,7 @@ */ #include <kmi/sp_tree.h> +#include <kmi/assert.h> /** * Basic BST left turn. @@ -25,6 +26,8 @@ static void __sp_turn_left(struct sp_node *n) struct sp_node *l = sp_left(n); struct sp_node *p = sp_paren(n); + assert(l); + sp_paren(l) = sp_paren(n); sp_left(n) = sp_right(l); sp_paren(n) = l; @@ -53,6 +56,8 @@ static void __sp_turn_right(struct sp_node *n) struct sp_node *r = sp_right(n); struct sp_node *p = sp_paren(n); + assert(r); + sp_paren(r) = sp_paren(n); sp_right(n) = sp_left(r); sp_paren(n) = r; |
