Index: snapshot/minidump/minidump_simple_string_dictionary_reader.cc |
diff --git a/snapshot/minidump/minidump_simple_string_dictionary_reader.cc b/snapshot/minidump/minidump_simple_string_dictionary_reader.cc |
index 685266d74d5450da9eddcacad8263ca1ca8a154f..88399452be5fbc0f8f57d08b0a9231b088e0e77e 100644 |
--- a/snapshot/minidump/minidump_simple_string_dictionary_reader.cc |
+++ b/snapshot/minidump/minidump_simple_string_dictionary_reader.cc |
@@ -28,8 +28,9 @@ bool ReadMinidumpSimpleStringDictionary( |
FileReaderInterface* file_reader, |
const MINIDUMP_LOCATION_DESCRIPTOR& location, |
std::map<std::string, std::string>* dictionary) { |
+ dictionary->clear(); |
+ |
if (location.Rva == 0) { |
- dictionary->clear(); |
return true; |
} |
@@ -48,7 +49,8 @@ bool ReadMinidumpSimpleStringDictionary( |
} |
if (location.DataSize != |
- entry_count * sizeof(MinidumpSimpleStringDictionaryEntry)) { |
+ sizeof(MinidumpSimpleStringDictionary) + |
+ entry_count * sizeof(MinidumpSimpleStringDictionaryEntry)) { |
LOG(ERROR) << "simple_string_dictionary size mismatch"; |
return false; |
} |
@@ -73,15 +75,14 @@ bool ReadMinidumpSimpleStringDictionary( |
continue; |
} |
- if (local_dictionary.find(key) != local_dictionary.end()) { |
+ if (dictionary->find(key) != dictionary->end()) { |
LOG(WARNING) << "duplicate key " << key << ", discarding value " << value; |
continue; |
} |
- local_dictionary.insert(std::make_pair(key, value)); |
+ dictionary->insert(std::make_pair(key, value)); |
} |
- dictionary->swap(local_dictionary); |
return true; |
} |