From ace33ff2c18c732e7ac30c49d95f7c35e06d7cee Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Fri, 4 Sep 2020 09:16:44 +0200 Subject: fix: Prüfe, ob 'data' wirklich dereferenziert werden kann MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stack2.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'stack2.c') diff --git a/stack2.c b/stack2.c index 57dce4f..4c77ac2 100644 --- a/stack2.c +++ b/stack2.c @@ -1,13 +1,13 @@ +#include #include #include -#include #include "util.h" typedef int T; struct stack { - T *array; + T * array; size_t sz, p; }; @@ -15,8 +15,8 @@ void stack_init(struct stack *stack) { stack->array = NULL; - stack->sz = 0; - stack->p = 0; + stack->sz = 0; + stack->p = 0; } bool @@ -25,7 +25,7 @@ stack_push(struct stack *stack, T data) if ( stack->array == NULL ) { if ( (stack->array = malloc(10 * sizeof(*stack->array))) != NULL ) { stack->sz = 10; - stack->p = 0; + stack->p = 0; } else { ERROR("out of memory"); @@ -35,11 +35,11 @@ stack_push(struct stack *stack, T data) if ( stack->p == stack->sz ) { size_t new_sz; - T *new_array; + T * new_array; - if ( (new_array = realloc(stack->array, (new_sz = (stack->sz * 3 / 2)) * sizeof(*stack->array))) != NULL ) { + if ( (new_array = realloc(stack->array, (new_sz = (stack->sz * 3 / 2)) * sizeof(*stack->array))) != NULL ) { stack->array = new_array; - stack->sz = new_sz; + stack->sz = new_sz; } else { ERROR("out of memory"); @@ -55,7 +55,11 @@ bool stack_pop(struct stack *stack, T *data) { if ( stack->p != 0 ) { - *data = stack->array[--stack->p]; + --stack->p; + + if ( data != NULL ) { + *data = stack->array[stack->p]; + } return true; } else @@ -97,4 +101,3 @@ main() return EXIT_SUCCESS; } - -- cgit v1.3