From 32f2605656883c1a1c7810f0f644d0e2df0cf374 Mon Sep 17 00:00:00 2001 From: wjf-hs Date: Wed, 30 Apr 2025 15:01:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E4=B8=8A=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E5=88=B0=E6=88=91=E7=90=86=E6=83=B3=E4=B8=AD=E7=9A=84=E6=A0=B7?= =?UTF-8?q?=E5=AD=90=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/list.c | 9 ++------- test/test_list.c | 5 +++++ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/list.c b/src/list.c index f777467..ab4b0d6 100644 --- a/src/list.c +++ b/src/list.c @@ -283,14 +283,9 @@ struct _list* list_slice(struct _list* self, int start, int end, int step) list->compare = self->compare; list->print_obj = self->print_obj; - if (start > size || end > size) - { - goto done; - } - if (step > 0) { - if (start > end) + if (start >= end) { goto done; } @@ -312,7 +307,7 @@ struct _list* list_slice(struct _list* self, int start, int end, int step) } else /*if(step < 0)*/ { - if (start < end) + if (start <= end) { goto done; } diff --git a/test/test_list.c b/test/test_list.c index f82988e..8db9726 100644 --- a/test/test_list.c +++ b/test/test_list.c @@ -451,6 +451,11 @@ static void test_list_slice_empty(void) TEST_ASSERT_TRUE(list2->empty(list2)); list_free(&list2); + list2 = list->slice(list, len, LIST_UNLIMITED, 1); // if start == end + TEST_ASSERT_NOT_NULL(list2); + TEST_ASSERT_TRUE(list2->empty(list2)); + list_free(&list2); + list2 = list->slice(list, 1, 5, -1); // if start < end && step < 0 TEST_ASSERT_NOT_NULL(list2); TEST_ASSERT_TRUE(list2->empty(list2));