From 161c4f20bfbd54f0b77426adccb68ee831678af0 Mon Sep 17 00:00:00 2001 From: Corentin Chary Date: Wed, 19 May 2010 09:24:08 +0200 Subject: 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 --- vnc-encoding-zlib.c | 8 ++++++++ vnc.c | 2 ++ vnc.h | 1 + 3 files changed, 11 insertions(+) diff --git a/vnc-encoding-zlib.c b/vnc-encoding-zlib.c index 52b18aa..1d4dd1a 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 6b2f724..f48f253 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 c97113b..2fbe614 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 */ -- cgit v1.1