From 16470f259286856e5c48cf02bd3b653bfaa72c9b Mon Sep 17 00:00:00 2001 From: Squibid Date: Sat, 16 Aug 2025 23:38:14 -0400 Subject: [PATCH] don't crash when removing out of bounds --- ds.c | 10 +++++++++- test.c | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ds.c b/ds.c index d9ea54b..2550583 100644 --- a/ds.c +++ b/ds.c @@ -67,7 +67,7 @@ void return NULL; } - for (i = -1, cur = *ll;; i++, cur = cur->next) { + for (i = -1, cur = *ll; cur; i++, cur = cur->next) { if (i + 1 == idx) { if (idx == 0) { rm = cur; @@ -86,6 +86,10 @@ void } } + if (!rm) { + return NULL; + } + data = rm->data; free(rm); return data; @@ -127,6 +131,10 @@ void } } + if (!rm) { + return NULL; + } + data = rm->data; free(rm); return data; diff --git a/test.c b/test.c index 4ee951c..d529ed4 100644 --- a/test.c +++ b/test.c @@ -17,6 +17,7 @@ main(int argc, char *argv[]) ds_ll_foreach(ds_sll_t, ll) { puts(cur->data); } + ds_sll_remove(&ll, 1234); char *pa = ds_sll_remove(&ll, 0); // [ "two" ] char *pb = ds_sll_remove(&ll, 0); // [ ]