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

Unified Diff: ui/base/sequential_id_generator.cc

Issue 23654045: ui: Fix removing a number from the SequentialIDGenerator. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/base/sequential_id_generator.h ('k') | ui/base/sequential_id_generator_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/sequential_id_generator.cc
diff --git a/ui/base/sequential_id_generator.cc b/ui/base/sequential_id_generator.cc
index 492efe5af8219d83382a4f7e6793fb38d596e32a..ac3b1a0ed41d0f1bf45e18a8effdcfdfbba181ce 100644
--- a/ui/base/sequential_id_generator.cc
+++ b/ui/base/sequential_id_generator.cc
@@ -40,7 +40,7 @@ uint32 SequentialIDGenerator::GetGeneratedID(uint32 number) {
if (find != number_to_id_.end())
return find->second;
- int id = GetNextAvailableSlot();
+ int id = GetNextAvailableID();
number_to_id_.insert(std::make_pair(number, id));
id_to_number_.insert(std::make_pair(id, number));
return id;
@@ -51,18 +51,17 @@ bool SequentialIDGenerator::HasGeneratedIDFor(uint32 number) const {
}
void SequentialIDGenerator::ReleaseGeneratedID(uint32 id) {
- if (id < min_available_id_) {
- min_available_id_ = id;
- DCHECK_GE(min_available_id_, min_id_);
- }
+ UpdateNextAvailableIDAfterRelease(id);
Remove(id, &id_to_number_, &number_to_id_);
}
void SequentialIDGenerator::ReleaseNumber(uint32 number) {
+ DCHECK_GT(number_to_id_.count(number), 0U);
+ UpdateNextAvailableIDAfterRelease(number_to_id_[number]);
Remove(number, &number_to_id_, &id_to_number_);
}
-uint32 SequentialIDGenerator::GetNextAvailableSlot() {
+uint32 SequentialIDGenerator::GetNextAvailableID() {
const uint32 kMaxID = 128;
while (id_to_number_.count(min_available_id_) > 0 &&
min_available_id_ < kMaxID) {
@@ -73,4 +72,11 @@ uint32 SequentialIDGenerator::GetNextAvailableSlot() {
return min_available_id_;
}
+void SequentialIDGenerator::UpdateNextAvailableIDAfterRelease(uint32 id) {
+ if (id < min_available_id_) {
+ min_available_id_ = id;
+ DCHECK_GE(min_available_id_, min_id_);
+ }
+}
+
} // namespace ui
« no previous file with comments | « ui/base/sequential_id_generator.h ('k') | ui/base/sequential_id_generator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698