From 5e407d74130accfbbf94d2cabcb03fc126a89410 Mon Sep 17 00:00:00 2001 From: Determinant Date: Wed, 24 Jun 2015 22:48:24 +0800 Subject: separate non-Lua part of matrix code to a dedicated dir --- nerv/lib/io/chunk_file.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'nerv/lib/io/chunk_file.c') diff --git a/nerv/lib/io/chunk_file.c b/nerv/lib/io/chunk_file.c index a305962..e70ffc9 100644 --- a/nerv/lib/io/chunk_file.c +++ b/nerv/lib/io/chunk_file.c @@ -91,6 +91,7 @@ static ChunkFile *open_write(const char *fn, int *status) { } cfp = (ChunkFile *)malloc(sizeof(ChunkFile)); cfp->fp = fp; + cfp->info = NULL; cfp->status = CF_WRITE; *status = CF_NORMAL; return cfp; @@ -111,8 +112,6 @@ static ChunkFile *open_read(const char *fn, int *status) { return NULL; } cfp = (ChunkFile *)malloc(sizeof(ChunkFile)); - cfp->fp = fp; - cfp->status = CF_READ; offset = ftello(fp); /* fprintf(stderr, "%d\n", (int)offset); */ for (i = 0;; offset += chunk_len, i++) @@ -144,7 +143,9 @@ static ChunkFile *open_read(const char *fn, int *status) { head = cip; } *status = CF_NORMAL; + cfp->fp = fp; cfp->info = head; + cfp->status = CF_READ; return cfp; } @@ -208,13 +209,16 @@ void nerv_chunk_file_close(ChunkFile *cfp) { void nerv_chunk_file_destroy(ChunkFile *cfp) { ChunkInfo *i, *ni; - if (cfp->status != CF_CLOSED) fclose(cfp->fp); - for (i = cfp->info; i; i = ni) + if (cfp->info) { - ni = i->next; - free(i->metadata); - free(i); + for (i = cfp->info; i; i = ni) + { + ni = i->next; + free(i->metadata); + free(i); + } } + if (cfp->status != CF_CLOSED) fclose(cfp->fp); free(cfp); } -- cgit v1.2.3