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

Side by Side Diff: third_party/crashpad/crashpad/util/mach/task_memory.cc

Issue 1911823002: Convert //third_party from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cacheinvalidation Created 4 years, 8 months 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,
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 DCHECK_GE(user_address, vm_address); 61 DCHECK_GE(user_address, vm_address);
62 DCHECK_LE(user_address, vm_end); 62 DCHECK_LE(user_address, vm_end);
63 DCHECK_GE(user_end, vm_address); 63 DCHECK_GE(user_end, vm_address);
64 DCHECK_LE(user_end, vm_end); 64 DCHECK_LE(user_end, vm_end);
65 } 65 }
66 66
67 TaskMemory::TaskMemory(task_t task) : task_(task) { 67 TaskMemory::TaskMemory(task_t task) : task_(task) {
68 } 68 }
69 69
70 bool TaskMemory::Read(mach_vm_address_t address, size_t size, void* buffer) { 70 bool TaskMemory::Read(mach_vm_address_t address, size_t size, void* buffer) {
71 scoped_ptr<MappedMemory> memory = ReadMapped(address, size); 71 std::unique_ptr<MappedMemory> memory = ReadMapped(address, size);
72 if (!memory) { 72 if (!memory) {
73 return false; 73 return false;
74 } 74 }
75 75
76 memcpy(buffer, memory->data(), size); 76 memcpy(buffer, memory->data(), size);
77 return true; 77 return true;
78 } 78 }
79 79
80 scoped_ptr<TaskMemory::MappedMemory> TaskMemory::ReadMapped( 80 std::unique_ptr<TaskMemory::MappedMemory> TaskMemory::ReadMapped(
81 mach_vm_address_t address, size_t size) { 81 mach_vm_address_t address,
82 size_t size) {
82 if (size == 0) { 83 if (size == 0) {
83 return scoped_ptr<MappedMemory>(new MappedMemory(0, 0, 0, 0)); 84 return std::unique_ptr<MappedMemory>(new MappedMemory(0, 0, 0, 0));
84 } 85 }
85 86
86 mach_vm_address_t region_address = mach_vm_trunc_page(address); 87 mach_vm_address_t region_address = mach_vm_trunc_page(address);
87 mach_vm_size_t region_size = 88 mach_vm_size_t region_size =
88 mach_vm_round_page(address - region_address + size); 89 mach_vm_round_page(address - region_address + size);
89 90
90 vm_offset_t region; 91 vm_offset_t region;
91 mach_msg_type_number_t region_count; 92 mach_msg_type_number_t region_count;
92 kern_return_t kr = 93 kern_return_t kr =
93 mach_vm_read(task_, region_address, region_size, &region, &region_count); 94 mach_vm_read(task_, region_address, region_size, &region, &region_count);
94 if (kr != KERN_SUCCESS) { 95 if (kr != KERN_SUCCESS) {
95 MACH_LOG(WARNING, kr) << base::StringPrintf( 96 MACH_LOG(WARNING, kr) << base::StringPrintf(
96 "mach_vm_read(0x%llx, 0x%llx)", region_address, region_size); 97 "mach_vm_read(0x%llx, 0x%llx)", region_address, region_size);
97 return scoped_ptr<MappedMemory>(); 98 return std::unique_ptr<MappedMemory>();
98 } 99 }
99 100
100 DCHECK_EQ(region_count, region_size); 101 DCHECK_EQ(region_count, region_size);
101 return scoped_ptr<MappedMemory>( 102 return std::unique_ptr<MappedMemory>(
102 new MappedMemory(region, region_size, address - region_address, size)); 103 new MappedMemory(region, region_size, address - region_address, size));
103 } 104 }
104 105
105 bool TaskMemory::ReadCString(mach_vm_address_t address, std::string* string) { 106 bool TaskMemory::ReadCString(mach_vm_address_t address, std::string* string) {
106 return ReadCStringInternal(address, false, 0, string); 107 return ReadCStringInternal(address, false, 0, string);
107 } 108 }
108 109
109 bool TaskMemory::ReadCStringSizeLimited(mach_vm_address_t address, 110 bool TaskMemory::ReadCStringSizeLimited(mach_vm_address_t address,
110 mach_vm_size_t size, 111 mach_vm_size_t size,
111 std::string* string) { 112 std::string* string) {
(...skipping 11 matching lines...) Expand all
123 } 124 }
124 } else { 125 } else {
125 size = PAGE_SIZE; 126 size = PAGE_SIZE;
126 } 127 }
127 128
128 std::string local_string; 129 std::string local_string;
129 mach_vm_address_t read_address = address; 130 mach_vm_address_t read_address = address;
130 do { 131 do {
131 mach_vm_size_t read_length = 132 mach_vm_size_t read_length =
132 std::min(size, PAGE_SIZE - (read_address % PAGE_SIZE)); 133 std::min(size, PAGE_SIZE - (read_address % PAGE_SIZE));
133 scoped_ptr<MappedMemory> read_region = 134 std::unique_ptr<MappedMemory> read_region =
134 ReadMapped(read_address, read_length); 135 ReadMapped(read_address, read_length);
135 if (!read_region) { 136 if (!read_region) {
136 return false; 137 return false;
137 } 138 }
138 139
139 const char* read_region_data = 140 const char* read_region_data =
140 reinterpret_cast<const char*>(read_region->data()); 141 reinterpret_cast<const char*>(read_region->data());
141 size_t read_region_data_length = strnlen(read_region_data, read_length); 142 size_t read_region_data_length = strnlen(read_region_data, read_length);
142 local_string.append(read_region_data, read_region_data_length); 143 local_string.append(read_region_data, read_region_data_length);
143 if (read_region_data_length < read_length) { 144 if (read_region_data_length < read_length) {
144 string->swap(local_string); 145 string->swap(local_string);
145 return true; 146 return true;
146 } 147 }
147 148
148 if (has_size) { 149 if (has_size) {
149 size -= read_length; 150 size -= read_length;
150 } 151 }
151 read_address = mach_vm_trunc_page(read_address + read_length); 152 read_address = mach_vm_trunc_page(read_address + read_length);
152 } while ((!has_size || size > 0) && read_address > address); 153 } while ((!has_size || size > 0) && read_address > address);
153 154
154 LOG(WARNING) << base::StringPrintf("unterminated string at 0x%llx", address); 155 LOG(WARNING) << base::StringPrintf("unterminated string at 0x%llx", address);
155 return false; 156 return false;
156 } 157 }
157 158
158 } // namespace crashpad 159 } // namespace crashpad
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698