Use std::map::extract() in a few places
Change-Id: I9c10cc32bd0c20d517bd6d0e1a902aaa38ca3726
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/134870
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
index c422110..f3c65f3 100644
--- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
+++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
@@ -159,10 +159,9 @@
const std::vector<ByteString>& keys_to_restore,
CPDF_PageObjectHolder::RemovedResourceMap& saved_resource_map) {
for (const ByteString& key : keys_to_restore) {
- auto it = saved_resource_map.find(key);
- CHECK(it != saved_resource_map.end());
- resource_dict->SetFor(key, std::move(it->second));
- saved_resource_map.erase(it);
+ auto node = saved_resource_map.extract(key);
+ CHECK(!node.empty());
+ resource_dict->SetFor(node.key(), std::move(node.mapped()));
}
}
diff --git a/core/fpdfapi/parser/cpdf_dictionary.cpp b/core/fpdfapi/parser/cpdf_dictionary.cpp
index 01fa53d..de35427 100644
--- a/core/fpdfapi/parser/cpdf_dictionary.cpp
+++ b/core/fpdfapi/parser/cpdf_dictionary.cpp
@@ -303,13 +303,12 @@
RetainPtr<CPDF_Object> CPDF_Dictionary::RemoveFor(ByteStringView key) {
CHECK(!IsLocked());
- RetainPtr<CPDF_Object> result;
auto it = map_.find(key);
- if (it != map_.end()) {
- result = std::move(it->second);
- map_.erase(it);
+ if (it == map_.end()) {
+ return RetainPtr<CPDF_Object>();
}
- return result;
+ auto node = map_.extract(it);
+ return std::move(node.mapped());
}
void CPDF_Dictionary::ReplaceKey(const ByteString& oldkey,
diff --git a/fpdfsdk/formfiller/cffl_formfield.cpp b/fpdfsdk/formfiller/cffl_formfield.cpp
index 1d16e50..3409630 100644
--- a/fpdfsdk/formfiller/cffl_formfield.cpp
+++ b/fpdfsdk/formfiller/cffl_formfield.cpp
@@ -28,11 +28,9 @@
void CFFL_FormField::DestroyWindows() {
while (!maps_.empty()) {
- auto it = maps_.begin();
- std::unique_ptr<CPWL_Wnd> pWnd = std::move(it->second);
- maps_.erase(it);
- pWnd->InvalidateProvider(this);
- pWnd->Destroy();
+ auto node = maps_.extract(maps_.begin());
+ node.mapped()->InvalidateProvider(this);
+ node.mapped()->Destroy();
}
}
@@ -412,14 +410,11 @@
}
void CFFL_FormField::DestroyPWLWindow(const CPDFSDK_PageView* pPageView) {
- auto it = maps_.find(pPageView);
- if (it == maps_.end()) {
+ auto node = maps_.extract(pPageView);
+ if (node.empty()) {
return;
}
-
- std::unique_ptr<CPWL_Wnd> pWnd = std::move(it->second);
- maps_.erase(it);
- pWnd->Destroy();
+ node.mapped()->Destroy();
}
CFX_Matrix CFFL_FormField::GetWindowMatrix(