- apply patch.memleaks-tominac from Darko Tominac <darko.tominac@zg.tel.hr>
which fixes some potential memory leaks
This commit is contained in:
parent
9884c923cd
commit
cbd68598a3
@ -1,10 +1,10 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
// $Id: siminterface.cc,v 1.36 2001-12-12 10:38:39 cbothamy Exp $
|
// $Id: siminterface.cc,v 1.37 2001-12-21 19:33:18 bdenney Exp $
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
/*
|
/*
|
||||||
* gui/siminterface.cc
|
* gui/siminterface.cc
|
||||||
* $Id: siminterface.cc,v 1.36 2001-12-12 10:38:39 cbothamy Exp $
|
* $Id: siminterface.cc,v 1.37 2001-12-21 19:33:18 bdenney Exp $
|
||||||
*
|
*
|
||||||
* Defines the actual link between bx_simulator_interface_c methods
|
* Defines the actual link between bx_simulator_interface_c methods
|
||||||
* and the simulator. This file includes bochs.h because it needs
|
* and the simulator. This file includes bochs.h because it needs
|
||||||
@ -32,6 +32,7 @@ class bx_real_sim_c : public bx_simulator_interface_c {
|
|||||||
int enabled;
|
int enabled;
|
||||||
public:
|
public:
|
||||||
bx_real_sim_c ();
|
bx_real_sim_c ();
|
||||||
|
~bx_real_sim_c ();
|
||||||
virtual int get_init_done () { return init_done; }
|
virtual int get_init_done () { return init_done; }
|
||||||
virtual int set_init_done (int n) { init_done = n; return 0;}
|
virtual int set_init_done (int n) { init_done = n; return 0;}
|
||||||
virtual int register_param (bx_id id, bx_param_c *it);
|
virtual int register_param (bx_id id, bx_param_c *it);
|
||||||
@ -127,6 +128,15 @@ bx_real_sim_c::bx_real_sim_c ()
|
|||||||
param_registry = new bx_param_c* [registry_alloc_size];
|
param_registry = new bx_param_c* [registry_alloc_size];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bx_real_sim_c::~bx_real_sim_c ()
|
||||||
|
{
|
||||||
|
if ( param_registry != NULL )
|
||||||
|
{
|
||||||
|
delete [] param_registry;
|
||||||
|
param_registry = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
bx_real_sim_c::register_param (bx_id id, bx_param_c *it)
|
bx_real_sim_c::register_param (bx_id id, bx_param_c *it)
|
||||||
{
|
{
|
||||||
@ -449,6 +459,26 @@ bx_param_string_c::bx_param_string_c (bx_id id,
|
|||||||
set (initial_val);
|
set (initial_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bx_param_string_c::~bx_param_string_c ()
|
||||||
|
{
|
||||||
|
if ( this->val != NULL )
|
||||||
|
{
|
||||||
|
delete [] this->val;
|
||||||
|
this->val = NULL;
|
||||||
|
}
|
||||||
|
if ( this->initial_val != NULL )
|
||||||
|
{
|
||||||
|
delete [] this->initial_val;
|
||||||
|
this->initial_val = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( this->options != NULL )
|
||||||
|
{
|
||||||
|
delete [] this->options;
|
||||||
|
this->options = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
bx_param_string_c::reset () {
|
bx_param_string_c::reset () {
|
||||||
strncpy (this->val, this->initial_val, maxsize);
|
strncpy (this->val, this->initial_val, maxsize);
|
||||||
@ -516,6 +546,30 @@ bx_list_c::bx_list_c (bx_id id, char *name, char *description, bx_param_c **init
|
|||||||
init ();
|
init ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bx_list_c::~bx_list_c()
|
||||||
|
{
|
||||||
|
if (this->list)
|
||||||
|
{
|
||||||
|
delete [] this->list;
|
||||||
|
this->list = NULL;
|
||||||
|
}
|
||||||
|
if ( this->title != NULL)
|
||||||
|
{
|
||||||
|
delete this->title;
|
||||||
|
this->title = NULL;
|
||||||
|
}
|
||||||
|
if (this->options != NULL)
|
||||||
|
{
|
||||||
|
delete this->options;
|
||||||
|
this->options = NULL;
|
||||||
|
}
|
||||||
|
if ( this->choice != NULL )
|
||||||
|
{
|
||||||
|
delete this->choice;
|
||||||
|
this->choice = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
bx_list_c::init ()
|
bx_list_c::init ()
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
// $Id: siminterface.h,v 1.29 2001-12-14 17:54:58 cbothamy Exp $
|
// $Id: siminterface.h,v 1.30 2001-12-21 19:33:18 bdenney Exp $
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
/*
|
/*
|
||||||
* gui/siminterface.h
|
* gui/siminterface.h
|
||||||
* $Id: siminterface.h,v 1.29 2001-12-14 17:54:58 cbothamy Exp $
|
* $Id: siminterface.h,v 1.30 2001-12-21 19:33:18 bdenney Exp $
|
||||||
*
|
*
|
||||||
* Interface to the simulator, currently only used by control.cc.
|
* Interface to the simulator, currently only used by control.cc.
|
||||||
* The base class bx_simulator_interface_c, contains only virtual functions
|
* The base class bx_simulator_interface_c, contains only virtual functions
|
||||||
@ -229,6 +229,7 @@ public:
|
|||||||
char *description,
|
char *description,
|
||||||
char *initial_val,
|
char *initial_val,
|
||||||
int maxsize=-1);
|
int maxsize=-1);
|
||||||
|
~bx_param_string_c ();
|
||||||
void reset ();
|
void reset ();
|
||||||
void set_handler (param_string_event_handler handler);
|
void set_handler (param_string_event_handler handler);
|
||||||
Bit32s get (char *buf, int len);
|
Bit32s get (char *buf, int len);
|
||||||
@ -274,6 +275,7 @@ public:
|
|||||||
} bx_listopt_bits;
|
} bx_listopt_bits;
|
||||||
//bx_list_c (bx_id id, int maxsize);
|
//bx_list_c (bx_id id, int maxsize);
|
||||||
bx_list_c (bx_id id, char *name, char *description, bx_param_c **init_list);
|
bx_list_c (bx_id id, char *name, char *description, bx_param_c **init_list);
|
||||||
|
~bx_list_c();
|
||||||
void add (bx_param_c *param);
|
void add (bx_param_c *param);
|
||||||
bx_param_c *get (int index);
|
bx_param_c *get (int index);
|
||||||
bx_param_num_c *get_options () { return options; }
|
bx_param_num_c *get_options () { return options; }
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
// $Id: win32.cc,v 1.21 2001-12-13 18:36:29 vruppert Exp $
|
// $Id: win32.cc,v 1.22 2001-12-21 19:33:18 bdenney Exp $
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||||
@ -855,7 +855,8 @@ unsigned bx_gui_c::create_bitmap(const unsigned char *bmap, unsigned xdim,
|
|||||||
for (unsigned i=0; i<ydim * xdim/8; i++)
|
for (unsigned i=0; i<ydim * xdim/8; i++)
|
||||||
data[i] = reverse_bitorder(bmap[i]);
|
data[i] = reverse_bitorder(bmap[i]);
|
||||||
SetBitmapBits(bx_bitmaps[bx_bitmap_entries].bmap, ydim * xdim/8, data);
|
SetBitmapBits(bx_bitmaps[bx_bitmap_entries].bmap, ydim * xdim/8, data);
|
||||||
free(data);
|
delete [] data;
|
||||||
|
data = NULL;
|
||||||
|
|
||||||
bx_bitmaps[bx_bitmap_entries].xdim = xdim;
|
bx_bitmaps[bx_bitmap_entries].xdim = xdim;
|
||||||
bx_bitmaps[bx_bitmap_entries].ydim = ydim;
|
bx_bitmaps[bx_bitmap_entries].ydim = ydim;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
// $Id: harddrv.cc,v 1.41 2001-11-12 03:34:45 bdenney Exp $
|
// $Id: harddrv.cc,v 1.42 2001-12-21 19:33:18 bdenney Exp $
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||||
@ -85,6 +85,8 @@ static unsigned curr_multiple_sectors = 0; // was 0x3f
|
|||||||
|
|
||||||
bx_hard_drive_c::bx_hard_drive_c(void)
|
bx_hard_drive_c::bx_hard_drive_c(void)
|
||||||
{
|
{
|
||||||
|
s[0].hard_drive = NULL;
|
||||||
|
s[1].hard_drive = NULL;
|
||||||
put("HD");
|
put("HD");
|
||||||
settype(HDLOG);
|
settype(HDLOG);
|
||||||
#if EXTERNAL_DISK_SIMULATOR
|
#if EXTERNAL_DISK_SIMULATOR
|
||||||
@ -106,17 +108,27 @@ bx_hard_drive_c::bx_hard_drive_c(void)
|
|||||||
|
|
||||||
bx_hard_drive_c::~bx_hard_drive_c(void)
|
bx_hard_drive_c::~bx_hard_drive_c(void)
|
||||||
{
|
{
|
||||||
// nothing for now
|
|
||||||
BX_DEBUG(("Exit."));
|
BX_DEBUG(("Exit."));
|
||||||
|
if ( s[0].hard_drive != NULL ) /* DT 17.12.2001 21:55 */
|
||||||
|
{
|
||||||
|
delete s[0].hard_drive;
|
||||||
|
s[0].hard_drive = NULL;
|
||||||
|
}
|
||||||
|
if ( s[1].hard_drive != NULL )
|
||||||
|
{
|
||||||
|
delete s[1].hard_drive;
|
||||||
|
s[1].hard_drive = NULL; /* DT 17.12.2001 21:56 */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
bx_hard_drive_c::init(bx_devices_c *d, bx_cmos_c *cmos)
|
bx_hard_drive_c::init(bx_devices_c *d, bx_cmos_c *cmos)
|
||||||
{
|
{
|
||||||
BX_HD_THIS devices = d;
|
BX_HD_THIS devices = d;
|
||||||
BX_DEBUG(("Init $Id: harddrv.cc,v 1.41 2001-11-12 03:34:45 bdenney Exp $"));
|
BX_DEBUG(("Init $Id: harddrv.cc,v 1.42 2001-12-21 19:33:18 bdenney Exp $"));
|
||||||
|
|
||||||
/* HARD DRIVE 0 */
|
/* HARD DRIVE 0 */
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
// $Id: unmapped.cc,v 1.13 2001-10-03 13:10:38 bdenney Exp $
|
// $Id: unmapped.cc,v 1.14 2001-12-21 19:33:18 bdenney Exp $
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||||
@ -52,7 +52,11 @@ bx_unmapped_c::bx_unmapped_c(void)
|
|||||||
|
|
||||||
bx_unmapped_c::~bx_unmapped_c(void)
|
bx_unmapped_c::~bx_unmapped_c(void)
|
||||||
{
|
{
|
||||||
// nothing for now
|
if ( bioslog != NULL ) /* DT 17.12.2001 21:32 */
|
||||||
|
{
|
||||||
|
delete bioslog;
|
||||||
|
bioslog = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
// $Id: logio.cc,v 1.14 2001-12-08 18:08:24 bdenney Exp $
|
// $Id: logio.cc,v 1.15 2001-12-21 19:33:18 bdenney Exp $
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||||
@ -195,9 +195,10 @@ iofunctions::~iofunctions(void)
|
|||||||
|
|
||||||
logfunctions::logfunctions(void)
|
logfunctions::logfunctions(void)
|
||||||
{
|
{
|
||||||
|
prefix = NULL;
|
||||||
put(" ");
|
put(" ");
|
||||||
settype(GENLOG);
|
settype(GENLOG);
|
||||||
if(io == NULL && Allocio == 0) {
|
if (io == NULL && Allocio == 0) {
|
||||||
Allocio = 1;
|
Allocio = 1;
|
||||||
io = new iofunc_t(stderr);
|
io = new iofunc_t(stderr);
|
||||||
}
|
}
|
||||||
@ -210,6 +211,7 @@ logfunctions::logfunctions(void)
|
|||||||
|
|
||||||
logfunctions::logfunctions(iofunc_t *iofunc)
|
logfunctions::logfunctions(iofunc_t *iofunc)
|
||||||
{
|
{
|
||||||
|
prefix = NULL;
|
||||||
put(" ");
|
put(" ");
|
||||||
settype(GENLOG);
|
settype(GENLOG);
|
||||||
setio(iofunc);
|
setio(iofunc);
|
||||||
@ -221,6 +223,16 @@ logfunctions::logfunctions(iofunc_t *iofunc)
|
|||||||
|
|
||||||
logfunctions::~logfunctions(void)
|
logfunctions::~logfunctions(void)
|
||||||
{
|
{
|
||||||
|
if (io != NULL)
|
||||||
|
{
|
||||||
|
delete io;
|
||||||
|
io = NULL;
|
||||||
|
}
|
||||||
|
if ( this->prefix )
|
||||||
|
{
|
||||||
|
free(this->prefix);
|
||||||
|
this->prefix = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -238,6 +250,16 @@ logfunctions::put(char *p)
|
|||||||
char *tmpbuf;
|
char *tmpbuf;
|
||||||
tmpbuf=strdup("[ ]");// if we ever have more than 32 chars,
|
tmpbuf=strdup("[ ]");// if we ever have more than 32 chars,
|
||||||
// we need to rethink this
|
// we need to rethink this
|
||||||
|
|
||||||
|
if ( tmpbuf == NULL)
|
||||||
|
{
|
||||||
|
return ; /* allocation not successful */
|
||||||
|
}
|
||||||
|
if ( this->prefix != NULL )
|
||||||
|
{
|
||||||
|
free(this->prefix); /* free previously allocated memory */
|
||||||
|
this->prefix = NULL;
|
||||||
|
}
|
||||||
int len=strlen(p);
|
int len=strlen(p);
|
||||||
for(int i=1;i<len+1;i++) {
|
for(int i=1;i<len+1;i++) {
|
||||||
tmpbuf[i]=p[i-1];
|
tmpbuf[i]=p[i-1];
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
// $Id: main.cc,v 1.81 2001-12-14 17:55:51 cbothamy Exp $
|
// $Id: main.cc,v 1.82 2001-12-21 19:33:18 bdenney Exp $
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||||
@ -1195,13 +1195,15 @@ parse_bochsrc(char *rcfile)
|
|||||||
static void
|
static void
|
||||||
parse_line_unformatted(char *context, char *line)
|
parse_line_unformatted(char *context, char *line)
|
||||||
{
|
{
|
||||||
|
#define MAX_PARAMS_LEN 40
|
||||||
char *ptr;
|
char *ptr;
|
||||||
unsigned i, string_i;
|
unsigned i, string_i;
|
||||||
char string[512];
|
char string[512];
|
||||||
char *params[40];
|
char *params[MAX_PARAMS_LEN];
|
||||||
int num_params;
|
int num_params;
|
||||||
Boolean inquotes = 0;
|
Boolean inquotes = 0;
|
||||||
|
|
||||||
|
memset(params, 0, sizeof(params));
|
||||||
if (line == NULL) return;
|
if (line == NULL) return;
|
||||||
|
|
||||||
// if passed nothing but whitespace, just return
|
// if passed nothing but whitespace, just return
|
||||||
@ -1247,10 +1249,30 @@ parse_line_unformatted(char *context, char *line)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
string[string_i] = '\0';
|
string[string_i] = '\0';
|
||||||
|
if ( params[num_params] != NULL )
|
||||||
|
{
|
||||||
|
free(params[num_params]);
|
||||||
|
params[num_params] = NULL;
|
||||||
|
}
|
||||||
|
if ( num_params < MAX_PARAMS_LEN )
|
||||||
|
{
|
||||||
params[num_params++] = strdup (string);
|
params[num_params++] = strdup (string);
|
||||||
ptr = strtok(NULL, ",");
|
ptr = strtok(NULL, ",");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BX_PANIC (("too many parameters, max is %d\n", MAX_PARAMS_LEN));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
parse_line_formatted(context, num_params, ¶ms[0]);
|
parse_line_formatted(context, num_params, ¶ms[0]);
|
||||||
|
for (i=0; i < MAX_PARAMS_LEN; i++)
|
||||||
|
{
|
||||||
|
if ( params[i] != NULL )
|
||||||
|
{
|
||||||
|
free(params[i]);
|
||||||
|
params[i] = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
// $Id: state_file.cc,v 1.8 2001-10-03 13:10:37 bdenney Exp $
|
// $Id: state_file.cc,v 1.9 2001-12-21 19:33:18 bdenney Exp $
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||||
@ -128,4 +128,9 @@ state_file::state_file (FILE *f)
|
|||||||
state_file::~state_file()
|
state_file::~state_file()
|
||||||
{
|
{
|
||||||
BX_DEBUG(("Exit."));
|
BX_DEBUG(("Exit."));
|
||||||
|
if ( log != NULL )
|
||||||
|
{
|
||||||
|
delete log;
|
||||||
|
log = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user