Update the valgrind cleanup code to handle most tri constructs
This commit is contained in:
parent
84a24f2a34
commit
f5717a6e87
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2004-2012 Stephen Williams (steve@icarus.com)
|
* Copyright (c) 2004-2013 Stephen Williams (steve@icarus.com)
|
||||||
*
|
*
|
||||||
* This source code is free software; you can redistribute it
|
* This source code is free software; you can redistribute it
|
||||||
* and/or modify it in source code form under the terms of the GNU
|
* and/or modify it in source code form under the terms of the GNU
|
||||||
|
|
@ -90,6 +90,7 @@ void* vvp_net_t::operator new (size_t size)
|
||||||
static map<vvp_net_t*, bool> vvp_net_map;
|
static map<vvp_net_t*, bool> vvp_net_map;
|
||||||
static map<sfunc_core*, bool> sfunc_map;
|
static map<sfunc_core*, bool> sfunc_map;
|
||||||
static map<vvp_udp_fun_core*, bool> udp_map;
|
static map<vvp_udp_fun_core*, bool> udp_map;
|
||||||
|
static map<resolv_core*, bool> resolv_map;
|
||||||
static vvp_net_t **local_net_pool = 0;
|
static vvp_net_t **local_net_pool = 0;
|
||||||
static unsigned local_net_pool_count = 0;
|
static unsigned local_net_pool_count = 0;
|
||||||
|
|
||||||
|
|
@ -110,6 +111,9 @@ void vvp_net_delete(vvp_net_t *item)
|
||||||
if (vvp_udp_fun_core*tmp = dynamic_cast<vvp_udp_fun_core*> (item->fun)) {
|
if (vvp_udp_fun_core*tmp = dynamic_cast<vvp_udp_fun_core*> (item->fun)) {
|
||||||
udp_map[tmp] = true;
|
udp_map[tmp] = true;
|
||||||
}
|
}
|
||||||
|
if (resolv_core*tmp = dynamic_cast<resolv_core*>(item->fun)) {
|
||||||
|
resolv_map[tmp] = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void vvp_net_pool_delete()
|
void vvp_net_pool_delete()
|
||||||
|
|
@ -142,6 +146,12 @@ void vvp_net_pool_delete()
|
||||||
}
|
}
|
||||||
udp_map.clear();
|
udp_map.clear();
|
||||||
|
|
||||||
|
map<resolv_core*, bool>::iterator riter;
|
||||||
|
for (riter = resolv_map.begin(); riter != resolv_map.end(); ++ riter ) {
|
||||||
|
delete riter->first;
|
||||||
|
}
|
||||||
|
resolv_map.clear();
|
||||||
|
|
||||||
if (RUNNING_ON_VALGRIND && (vvp_nets_del != count_vvp_nets)) {
|
if (RUNNING_ON_VALGRIND && (vvp_nets_del != count_vvp_nets)) {
|
||||||
fflush(NULL);
|
fflush(NULL);
|
||||||
VALGRIND_PRINTF("Error: vvp missed deleting %ld of %lu net(s).",
|
VALGRIND_PRINTF("Error: vvp missed deleting %ld of %lu net(s).",
|
||||||
|
|
@ -244,7 +254,9 @@ void vvp_net_t::count_drivers(unsigned idx, unsigned counts[4])
|
||||||
|
|
||||||
void vvp_net_fun_t::operator delete(void*)
|
void vvp_net_fun_t::operator delete(void*)
|
||||||
{
|
{
|
||||||
|
#ifndef CHECK_WITH_VALGRIND
|
||||||
assert(0);
|
assert(0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue