Browse Source

Use realloc instead of doing it manually

pull/184/head
John Högberg 6 years ago
committed by Paul J. Davis
parent
commit
798e4a7dd2
1 changed files with 3 additions and 6 deletions
  1. +3
    -6
      c_src/decoder.c

+ 3
- 6
c_src/decoder.c View File

@ -162,22 +162,19 @@ dec_top(Decoder* d)
void void
dec_push(Decoder* d, char val) dec_push(Decoder* d, char val)
{ {
char* tmp;
int new_sz; int new_sz;
int i; int i;
if(d->st_top >= d->st_size) {
if(d->st_top == d->st_size) {
new_sz = d->st_size + STACK_SIZE_INC; 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; d->st_size = new_sz;
for(i = d->st_top; i < d->st_size; i++) { for(i = d->st_top; i < d->st_size; i++) {
d->st_data[i] = st_invalid; d->st_data[i] = st_invalid;
} }
} }
assert(d->st_top < d->st_size);
d->st_data[d->st_top++] = val; d->st_data[d->st_top++] = val;
} }

Loading…
Cancel
Save