From 1ec1700a4fc54005f27a60008e1eacaa1eaaee02 Mon Sep 17 00:00:00 2001 From: Sascha Wildner Date: Sat, 24 Sep 2005 14:40:00 +0000 Subject: [PATCH] Fix a memory leak I introduced when I changed the vtb_buffer from 'vm_offset_t' to 'uint16_t *' in my last commit. This caused the vtb_buffer never to be free()'d again in sc_vtb_destroy(). Ouchie! --- sys/dev/misc/syscons/scvtb.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sys/dev/misc/syscons/scvtb.c b/sys/dev/misc/syscons/scvtb.c index d090121ee7..b672741fb9 100644 --- a/sys/dev/misc/syscons/scvtb.c +++ b/sys/dev/misc/syscons/scvtb.c @@ -24,7 +24,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/dev/syscons/scvtb.c,v 1.5.2.1 2001/07/16 05:21:23 yokota Exp $ - * $DragonFly: src/sys/dev/misc/syscons/scvtb.c,v 1.6 2005/05/26 16:24:33 swildner Exp $ + * $DragonFly: src/sys/dev/misc/syscons/scvtb.c,v 1.7 2005/09/24 14:40:00 swildner Exp $ */ #include "opt_syscons.h" @@ -80,16 +80,20 @@ sc_vtb_init(sc_vtb_t *vtb, int type, int cols, int rows, void *buf, int wait) void sc_vtb_destroy(sc_vtb_t *vtb) { + uint16_t *p; + vtb->vtb_cols = 0; vtb->vtb_rows = 0; vtb->vtb_size = 0; vtb->vtb_tail = 0; + + p = vtb->vtb_buffer; vtb->vtb_buffer = NULL; switch (vtb->vtb_type) { case VTB_MEMORY: case VTB_RINGBUFFER: - if ((vtb->vtb_flags & VTB_ALLOCED) && (vtb->vtb_buffer != NULL)) - free(vtb->vtb_buffer, M_SYSCONS); + if ((vtb->vtb_flags & VTB_ALLOCED) && (p != NULL)) + free(p, M_SYSCONS); break; default: break; -- 2.41.0