diff options
| -rw-r--r-- | src/bin/main.c | 1 | ||||
| -rw-r--r-- | src/lib/memory.c | 7 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/bin/main.c b/src/bin/main.c index 42ab963..c3743f2 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -36,6 +36,7 @@ main(int argc, char *argv[]) aplwc_clear_line(&line); aplwc_clear_value(&value); + input = NULL; xflag = 0; input_file = 0; exit_code = 0; diff --git a/src/lib/memory.c b/src/lib/memory.c index b6e044a..694a31b 100644 --- a/src/lib/memory.c +++ b/src/lib/memory.c @@ -105,7 +105,7 @@ grow(struct aplwc *aplwc, size_t extra) { uint8_t *unaligned_data, *aligned_data; size_t unaligned_newsize, aligned_newsize, adjust; - struct chunk **free; + struct chunk **free, *head; if(aplwc->fns.alloc == NULL) goto error; @@ -123,16 +123,17 @@ grow(struct aplwc *aplwc, size_t extra) aligned_newsize -= aligned_newsize % ALIGNMENT; assert(aligned_newsize >= (aplwc->size + extra)); + head = (struct chunk *)aligned_data; if(aplwc->data){ memmove(aligned_data, aplwc->data, aplwc->size); fixrefs(aplwc, aligned_data, aplwc->data); if(aplwc->fns.dealloc) aplwc->fns.dealloc(aplwc->unaligned_data); - for(free = (struct chunk **)&aligned_data; (*free); free = &(*free)->next) + for(free = &head; (*free); free = &(*free)->next) assert((*free)->tag != CHUNK_TAG_FREE); }else - free = (struct chunk **)&aligned_data; + free = &head; (*free) = (struct chunk *)(aligned_data + aplwc->size); |