| Index: minidump/minidump_simple_string_dictionary_writer.cc
|
| diff --git a/minidump/minidump_simple_string_dictionary_writer.cc b/minidump/minidump_simple_string_dictionary_writer.cc
|
| index ef3a1eca176d4ad0cb12cb6a941b3f81ab7ecbfc..9218bd9786597a7c08e3cc484194d217e33a1eae 100644
|
| --- a/minidump/minidump_simple_string_dictionary_writer.cc
|
| +++ b/minidump/minidump_simple_string_dictionary_writer.cc
|
| @@ -15,6 +15,7 @@
|
| #include "minidump/minidump_simple_string_dictionary_writer.h"
|
|
|
| #include "base/logging.h"
|
| +#include "base/stl_util.h"
|
| #include "util/file/file_writer.h"
|
| #include "util/numeric/safe_assignment.h"
|
|
|
| @@ -92,13 +93,21 @@ MinidumpSimpleStringDictionaryWriter::MinidumpSimpleStringDictionaryWriter()
|
| }
|
|
|
| MinidumpSimpleStringDictionaryWriter::~MinidumpSimpleStringDictionaryWriter() {
|
| + STLDeleteContainerPairSecondPointers(entries_.begin(), entries_.end());
|
| }
|
|
|
| void MinidumpSimpleStringDictionaryWriter::AddEntry(
|
| - MinidumpSimpleStringDictionaryEntryWriter* entry) {
|
| + scoped_ptr<MinidumpSimpleStringDictionaryEntryWriter> entry) {
|
| DCHECK_GE(state(), kStateMutable);
|
|
|
| - entries_[entry->Key()] = entry;
|
| + const std::string& key = entry->Key();
|
| + auto iterator = entries_.find(key);
|
| + if (iterator != entries_.end()) {
|
| + delete iterator->second;
|
| + iterator->second = entry.release();
|
| + } else {
|
| + entries_[key] = entry.release();
|
| + }
|
| }
|
|
|
| bool MinidumpSimpleStringDictionaryWriter::Freeze() {
|
|
|