diff --git a/ChangeLog b/ChangeLog index 98ddf601..d0a2ac1b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-08-07 Tatsuhiro Tsujikawa + + Fixed memory leak + * src/Dictionary.cc + 2008-08-07 Tatsuhiro Tsujikawa Fixed memory leak diff --git a/src/Dictionary.cc b/src/Dictionary.cc index 16c785a2..d58745fa 100644 --- a/src/Dictionary.cc +++ b/src/Dictionary.cc @@ -67,8 +67,12 @@ void Dictionary::put(const std::string& name, MetaEntry* entry) { void Dictionary::remove(const std::string& name) { - table.erase(name); - order.erase(std::remove(order.begin(), order.end(), name), order.end()); + std::map::iterator i = table.find(name); + if(i != table.end()) { + delete i->second; + table.erase(i); + order.erase(std::remove(order.begin(), order.end(), name), order.end()); + } } void Dictionary::accept(MetaEntryVisitor* v) const {