summaryrefslogtreecommitdiff
path: root/library/DataDefs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'library/DataDefs.cpp')
-rw-r--r--library/DataDefs.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/library/DataDefs.cpp b/library/DataDefs.cpp
index 7f0bacc9..fa2aacf7 100644
--- a/library/DataDefs.cpp
+++ b/library/DataDefs.cpp
@@ -35,6 +35,7 @@ distribution.
// must be last due to MS stupidity
#include "DataDefs.h"
#include "DataIdentity.h"
+#include "VTableInterpose.h"
#include "MiscUtils.h"
@@ -214,6 +215,15 @@ virtual_identity::virtual_identity(size_t size, TAllocateFn alloc,
{
}
+virtual_identity::~virtual_identity()
+{
+ // Remove interpose entries, so that they don't try accessing this object later
+ for (auto it = interpose_list.begin(); it != interpose_list.end(); ++it)
+ if (it->second)
+ it->second->on_host_delete(this);
+ interpose_list.clear();
+}
+
/* Vtable name to identity lookup. */
static std::map<std::string, virtual_identity*> name_lookup;
@@ -364,7 +374,7 @@ void DFHack::bitfieldToString(std::vector<std::string> *pvec, const void *p,
unsigned size, const bitfield_item_info *items)
{
for (unsigned i = 0; i < size; i++) {
- int value = getBitfieldField(p, i, std::min(1,items[i].size));
+ int value = getBitfieldField(p, i, std::max(1,items[i].size));
if (value) {
std::string name = format_key(items[i].name, i);