From: Corentin Chary Date: Wed, 19 May 2010 07:24:08 +0000 (+0200) Subject: vnc: remove a memory leak in zlib X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=161c4f20bfbd54f0b77426adccb68ee831678af0;p=qemu.git vnc: remove a memory leak in zlib Makes sure we free all ressources used in zlib encoding (zlib stream and buffer). Signed-off-by: Corentin Chary Signed-off-by: Anthony Liguori --- diff --git a/vnc-encoding-zlib.c b/vnc-encoding-zlib.c index 52b18aa84a..1d4dd1aa47 100644 --- a/vnc-encoding-zlib.c +++ b/vnc-encoding-zlib.c @@ -140,3 +140,11 @@ void vnc_zlib_send_framebuffer_update(VncState *vs, int x, int y, int w, int h) vnc_write_u32(vs, bytes_written); vs->output.offset = new_offset; } + +void vnc_zlib_clear(VncState *vs) +{ + if (vs->zlib_stream.opaque) { + deflateEnd(&vs->zlib_stream); + } + buffer_free(&vs->zlib); +} diff --git a/vnc.c b/vnc.c index 6b2f7241a8..f48f253675 100644 --- a/vnc.c +++ b/vnc.c @@ -974,6 +974,8 @@ static void vnc_disconnect_finish(VncState *vs) qobject_decref(vs->info); + vnc_zlib_clear(vs); + #ifdef CONFIG_VNC_TLS vnc_tls_client_cleanup(vs); #endif /* CONFIG_VNC_TLS */ diff --git a/vnc.h b/vnc.h index c97113b8ea..2fbe614484 100644 --- a/vnc.h +++ b/vnc.h @@ -405,5 +405,6 @@ void vnc_hextile_send_framebuffer_update(VncState *vs, int x, void vnc_hextile_set_pixel_conversion(VncState *vs, int generic); void vnc_zlib_send_framebuffer_update(VncState *vs, int x, int y, int w, int h); +void vnc_zlib_clear(VncState *vs); #endif /* __QEMU_VNC_H */