Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1230)

Side by Side Diff: minidump/minidump_simple_string_dictionary_writer.cc

Issue 674153002: minidump: Change the ownership model (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Address review feedback Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Crashpad Authors. All rights reserved. 1 // Copyright 2014 The Crashpad Authors. All rights reserved.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and 12 // See the License for the specific language governing permissions and
13 // limitations under the License. 13 // limitations under the License.
14 14
15 #include "minidump/minidump_simple_string_dictionary_writer.h" 15 #include "minidump/minidump_simple_string_dictionary_writer.h"
16 16
17 #include "base/logging.h" 17 #include "base/logging.h"
18 #include "base/stl_util.h"
18 #include "util/file/file_writer.h" 19 #include "util/file/file_writer.h"
19 #include "util/numeric/safe_assignment.h" 20 #include "util/numeric/safe_assignment.h"
20 21
21 namespace crashpad { 22 namespace crashpad {
22 23
23 MinidumpSimpleStringDictionaryEntryWriter:: 24 MinidumpSimpleStringDictionaryEntryWriter::
24 MinidumpSimpleStringDictionaryEntryWriter() 25 MinidumpSimpleStringDictionaryEntryWriter()
25 : MinidumpWritable(), entry_(), key_(), value_() { 26 : MinidumpWritable(), entry_(), key_(), value_() {
26 } 27 }
27 28
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 // MinidumpSimpleStringDictionary, and its children are responsible for 86 // MinidumpSimpleStringDictionary, and its children are responsible for
86 // writing themselves. 87 // writing themselves.
87 return true; 88 return true;
88 } 89 }
89 90
90 MinidumpSimpleStringDictionaryWriter::MinidumpSimpleStringDictionaryWriter() 91 MinidumpSimpleStringDictionaryWriter::MinidumpSimpleStringDictionaryWriter()
91 : MinidumpWritable(), simple_string_dictionary_base_(), entries_() { 92 : MinidumpWritable(), simple_string_dictionary_base_(), entries_() {
92 } 93 }
93 94
94 MinidumpSimpleStringDictionaryWriter::~MinidumpSimpleStringDictionaryWriter() { 95 MinidumpSimpleStringDictionaryWriter::~MinidumpSimpleStringDictionaryWriter() {
96 STLDeleteContainerPairSecondPointers(entries_.begin(), entries_.end());
95 } 97 }
96 98
97 void MinidumpSimpleStringDictionaryWriter::AddEntry( 99 void MinidumpSimpleStringDictionaryWriter::AddEntry(
98 MinidumpSimpleStringDictionaryEntryWriter* entry) { 100 scoped_ptr<MinidumpSimpleStringDictionaryEntryWriter> entry) {
99 DCHECK_GE(state(), kStateMutable); 101 DCHECK_GE(state(), kStateMutable);
100 102
101 entries_[entry->Key()] = entry; 103 const std::string& key = entry->Key();
104 auto iterator = entries_.find(key);
105 if (iterator != entries_.end()) {
106 delete iterator->second;
107 iterator->second = entry.release();
108 } else {
109 entries_[key] = entry.release();
110 }
102 } 111 }
103 112
104 bool MinidumpSimpleStringDictionaryWriter::Freeze() { 113 bool MinidumpSimpleStringDictionaryWriter::Freeze() {
105 DCHECK_EQ(state(), kStateMutable); 114 DCHECK_EQ(state(), kStateMutable);
106 115
107 if (!MinidumpWritable::Freeze()) { 116 if (!MinidumpWritable::Freeze()) {
108 return false; 117 return false;
109 } 118 }
110 119
111 size_t entry_count = entries_.size(); 120 size_t entry_count = entries_.size();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 for (const auto& key_entry : entries_) { 157 for (const auto& key_entry : entries_) {
149 iov.iov_base = key_entry.second->MinidumpSimpleStringDictionaryEntry(); 158 iov.iov_base = key_entry.second->MinidumpSimpleStringDictionaryEntry();
150 iov.iov_len = sizeof(MinidumpSimpleStringDictionaryEntry); 159 iov.iov_len = sizeof(MinidumpSimpleStringDictionaryEntry);
151 iovecs.push_back(iov); 160 iovecs.push_back(iov);
152 } 161 }
153 162
154 return file_writer->WriteIoVec(&iovecs); 163 return file_writer->WriteIoVec(&iovecs);
155 } 164 }
156 165
157 } // namespace crashpad 166 } // namespace crashpad
OLDNEW
« no previous file with comments | « minidump/minidump_simple_string_dictionary_writer.h ('k') | minidump/minidump_simple_string_dictionary_writer_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698