summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/connection.cpp8
-rw-r--r--src/itemdef.cpp7
2 files changed, 13 insertions, 2 deletions
diff --git a/src/connection.cpp b/src/connection.cpp
index 31aa93307..127cabdc5 100644
--- a/src/connection.cpp
+++ b/src/connection.cpp
@@ -537,6 +537,14 @@ Connection::Connection(u32 protocol_id, u32 max_packet_size, float timeout,
Connection::~Connection()
{
stop();
+ // Delete peers
+ for(core::map<u16, Peer*>::Iterator
+ j = m_peers.getIterator();
+ j.atEnd() == false; j++)
+ {
+ Peer *peer = j.getNode()->getValue();
+ delete peer;
+ }
}
/* Internal stuff */
diff --git a/src/itemdef.cpp b/src/itemdef.cpp
index a646134af..934150aa1 100644
--- a/src/itemdef.cpp
+++ b/src/itemdef.cpp
@@ -290,8 +290,11 @@ public:
// Ensure that the "" item (the hand) always has ToolCapabilities
if(def.name == "")
assert(def.tool_capabilities != NULL);
-
- m_item_definitions[def.name] = new ItemDefinition(def);
+
+ if(m_item_definitions.count(def.name) == 0)
+ m_item_definitions[def.name] = new ItemDefinition(def);
+ else
+ *(m_item_definitions[def.name]) = def;
// Remove conflicting alias if it exists
bool alias_removed = (m_aliases.erase(def.name) != 0);