From cf7e8f2a7c27303f1f0565d3207d57c4f2f3e59f Mon Sep 17 00:00:00 2001 From: Christophe Bothamy Date: Tue, 24 Sep 2002 23:09:52 +0000 Subject: [PATCH] - fixed the pasting code. The bytes array passed as an argument was never freed. --- bochs/iodev/keyboard.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/bochs/iodev/keyboard.cc b/bochs/iodev/keyboard.cc index d99da36ca..f9207a505 100644 --- a/bochs/iodev/keyboard.cc +++ b/bochs/iodev/keyboard.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: keyboard.cc,v 1.63 2002-09-24 22:50:51 cbothamy Exp $ +// $Id: keyboard.cc,v 1.64 2002-09-24 23:09:52 cbothamy Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2002 MandrakeSoft S.A. @@ -70,7 +70,7 @@ bx_keyb_c::bx_keyb_c(void) memset( &s, 0, sizeof(s) ); BX_KEY_THIS put("KBD"); BX_KEY_THIS settype(KBDLOG); - BX_DEBUG(("Init $Id: keyboard.cc,v 1.63 2002-09-24 22:50:51 cbothamy Exp $")); + BX_DEBUG(("Init $Id: keyboard.cc,v 1.64 2002-09-24 23:09:52 cbothamy Exp $")); } bx_keyb_c::~bx_keyb_c(void) @@ -110,7 +110,7 @@ bx_keyb_c::resetinternals(Boolean powerup) void bx_keyb_c::init(bx_devices_c *d, bx_cmos_c *cmos) { - BX_DEBUG(("Init $Id: keyboard.cc,v 1.63 2002-09-24 22:50:51 cbothamy Exp $")); + BX_DEBUG(("Init $Id: keyboard.cc,v 1.64 2002-09-24 23:09:52 cbothamy Exp $")); Bit32u i; BX_KEY_THIS devices = d; @@ -699,13 +699,15 @@ bx_keyb_c::paste_bytes (Bit8u *bytes, Bit32s length) if (BX_KEY_THIS pastebuf) { BX_ERROR (("previous paste was not completed! %d chars lost", BX_KEY_THIS pastebuf_len - BX_KEY_THIS pastebuf_ptr)); - delete [] BX_KEY_THIS pastebuf; + free(BX_KEY_THIS pastebuf); } BX_KEY_THIS pastebuf = (Bit8u *) malloc (length); memcpy (BX_KEY_THIS pastebuf, bytes, length); BX_KEY_THIS pastebuf_ptr = 0; BX_KEY_THIS pastebuf_len = length; BX_KEY_THIS service_paste_buf (); + + delete [] bytes; } void