From 86855420e216a1ded1eab56880e4cb4217792b0f Mon Sep 17 00:00:00 2001 From: wjf-hs Date: Thu, 24 Apr 2025 11:36:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=88=E7=9A=84=E8=BF=AD=E4=BB=A3=E5=99=A8?= =?UTF-8?q?=E4=BB=8E=E6=A0=88=E9=A1=B6=E5=88=B0=E6=A0=88=E5=BA=95=EF=BC=8C?= =?UTF-8?q?=E5=8F=A6=E5=A4=96destory=E5=87=BD=E6=95=B0=E7=A7=81=E6=9C=89?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/demo_stack.c | 2 +- include/stack.h | 2 +- src/stack.c | 13 ++++++++----- test/test_stack.c | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/demo/demo_stack.c b/demo/demo_stack.c index 3677948..68c8669 100644 --- a/demo/demo_stack.c +++ b/demo/demo_stack.c @@ -200,7 +200,7 @@ static void demo_stack_struct(void) } } - stack->destory(stack); + stack->_destory(stack); stack_free(&stack); } diff --git a/include/stack.h b/include/stack.h index 31c1443..ec8a8bf 100644 --- a/include/stack.h +++ b/include/stack.h @@ -31,7 +31,7 @@ struct _stack struct _iterator _iter; - void (*destory)(struct _stack* self); + void (*_destory)(struct _stack* self); // ---------- public ---------- // kernel diff --git a/src/stack.c b/src/stack.c index 1e346b8..81adf90 100644 --- a/src/stack.c +++ b/src/stack.c @@ -282,7 +282,7 @@ static bool stack_init(struct _stack* self, uint32_t obj_size) // clear and free node self->clear = stack_clear; - self->destory = stack_destory; + self->_destory = stack_destory; // print self->print = stack_print; @@ -304,7 +304,10 @@ const void* stack_iter_next(struct _iterator* iter) assert(iter->parent != NULL); stack_t self = (stack_t)iter->parent; - void *obj = self->_head->obj + self->_iter._cur * self->_obj_size; + // from top to bottom + uint32_t index = self->size(self) - 1 - self->_iter._cur; + + void *obj = self->_head->obj + self->_obj_size * index; self->_iter._cur += 1; return obj; } @@ -360,7 +363,7 @@ static bool stack_init2(struct _stack* self, uint32_t obj_size, uint32_t capacit return false; } - self->destory = stack2_destory; + self->_destory = stack2_destory; // ---------- public ---------- // 2. set function @@ -418,9 +421,9 @@ void stack_free(stack_t *stack) assert(stack != NULL); if(stack != NULL && *stack != NULL) { - if((*stack)->destory != NULL) + if((*stack)->_destory != NULL) { - (*stack)->destory(*stack); + (*stack)->_destory(*stack); } free(*stack); *stack = NULL; diff --git a/test/test_stack.c b/test/test_stack.c index c8376e2..04975e9 100644 --- a/test/test_stack.c +++ b/test/test_stack.c @@ -470,7 +470,7 @@ static void test_stack2_iter(void) while(iter->hasnext(iter)) { temp = *(int *)iter->next(iter); - printf("%d ", temp); + // printf("%d ", temp); TEST_ASSERT_EQUAL_INT(data[len - 1 - i], temp); i++; }