From 5144fa96fcc3402e8aba48f31a1cda10bc6f5682 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20H=C3=B6gberg?= Date: Tue, 9 Apr 2019 07:12:21 +0200 Subject: [PATCH] Use realloc instead of doing it manually --- c_src/decoder.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/c_src/decoder.c b/c_src/decoder.c index 19bc04b..cb2451f 100644 --- a/c_src/decoder.c +++ b/c_src/decoder.c @@ -162,22 +162,19 @@ dec_top(Decoder* d) void dec_push(Decoder* d, char val) { - char* tmp; int new_sz; int i; - if(d->st_top >= d->st_size) { + if(d->st_top == d->st_size) { new_sz = d->st_size + STACK_SIZE_INC; - tmp = (char*) enif_alloc(new_sz * sizeof(char)); - memcpy(tmp, d->st_data, d->st_size * sizeof(char)); - enif_free(d->st_data); - d->st_data = tmp; + d->st_data = (char*)enif_realloc(d->st_data, new_sz); d->st_size = new_sz; for(i = d->st_top; i < d->st_size; i++) { d->st_data[i] = st_invalid; } } + assert(d->st_top < d->st_size); d->st_data[d->st_top++] = val; }