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); // [ ]