aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2024-08-18 00:17:35 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2024-08-18 00:17:35 +0300
commitab011165cd440b5535d39febd8118e3e26b64b57 (patch)
tree0f021b40bbcd9df6efdb5879832acac17ae254bb /src
parente38ce698c0e53473a4540e940b25b6093da84cb7 (diff)
downloadkmi-ab011165cd440b5535d39febd8118e3e26b64b57.tar.gz
kmi-ab011165cd440b5535d39febd8118e3e26b64b57.zip
small fixes to issues reported by analyzer
+ Currently analyzer has to be run manually with something like make CFLAGS='-fanalyzer -Wno-analyzer-infinite-loop' I use an infinite loop as an assert, I know it's not great/technically UB but it's just a fallback. + Analyzer is still somewhat limited, I could add in more attributes about different functions, such as memory allocation sizes etc. + If I ever set up a CI pipeline, remember to use analyzer?
Diffstat (limited to 'src')
-rw-r--r--src/regions.c3
-rw-r--r--src/sp_tree.c5
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;