diff options
author | Corentin Chary <corentincj@iksaif.net> | 2010-05-19 09:24:08 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2010-06-01 12:53:09 -0500 |
commit | 161c4f20bfbd54f0b77426adccb68ee831678af0 (patch) | |
tree | b61ba391c826cee4811ddba94b415513dab9f1ec | |
parent | 5d418e3ba96cfa810e00885a52b55f19cac8f9a6 (diff) |
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 <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r-- | vnc-encoding-zlib.c | 8 | ||||
-rw-r--r-- | vnc.c | 2 | ||||
-rw-r--r-- | vnc.h | 1 |
3 files changed, 11 insertions, 0 deletions
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); +} @@ -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 */ @@ -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 */ |