The buffers are allocated with g_(re)alloc, so use g_free to free them.
Signed-off-by: Kevin Wolf <[email protected]>
---
block/dmg.c | 16 +++++++++-------
1 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/block/dmg.c b/block/dmg.c
index d47d2d8..316d3c0 100644
--- a/block/dmg.c
+++ b/block/dmg.c
@@ -366,15 +366,17 @@ static coroutine_fn int dmg_co_read(BlockDriverState *bs,
int64_t sector_num,
static void dmg_close(BlockDriverState *bs)
{
BDRVDMGState *s = bs->opaque;
+
if(s->n_chunks>0) {
- free(s->types);
- free(s->offsets);
- free(s->lengths);
- free(s->sectors);
- free(s->sectorcounts);
+ g_free(s->types);
+ g_free(s->offsets);
+ g_free(s->lengths);
+ g_free(s->sectors);
+ g_free(s->sectorcounts);
}
- free(s->compressed_chunk);
- free(s->uncompressed_chunk);
+ g_free(s->compressed_chunk);
+ g_free(s->uncompressed_chunk);
+
inflateEnd(&s->zstream);
}
--
1.7.6.5