From 026514157db7967fcc678f1065725b85156cd3de Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Thu, 4 Jul 2013 08:04:57 -0700 Subject: [PATCH 1/3] Yet another RangeSet fix --- modules/ripple_basics/containers/ripple_RangeSet.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/ripple_basics/containers/ripple_RangeSet.cpp b/modules/ripple_basics/containers/ripple_RangeSet.cpp index 84854c0c0b..8bdf266f7f 100644 --- a/modules/ripple_basics/containers/ripple_RangeSet.cpp +++ b/modules/ripple_basics/containers/ripple_RangeSet.cpp @@ -99,7 +99,7 @@ uint32 RangeSet::prevMissing (uint32 v) const } else if (v > cur->second) { - // This range is "above" the interval + // v lies "above" the interval if (v == cur->second + 1) { @@ -116,6 +116,8 @@ uint32 RangeSet::prevMissing (uint32 v) const break; } } + + result = v - 1; } bassert (result == absent || !hasValue (result)); From 5dcbc92259237abb12539639983279a9eaba0544 Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Thu, 4 Jul 2013 13:48:23 -0700 Subject: [PATCH 2/3] Really fix prevMissing --- modules/ripple_basics/containers/ripple_RangeSet.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/ripple_basics/containers/ripple_RangeSet.cpp b/modules/ripple_basics/containers/ripple_RangeSet.cpp index 8bdf266f7f..e0f84e7b4e 100644 --- a/modules/ripple_basics/containers/ripple_RangeSet.cpp +++ b/modules/ripple_basics/containers/ripple_RangeSet.cpp @@ -85,6 +85,10 @@ uint32 RangeSet::prevMissing (uint32 v) const { checkInternalConsistency (); + // Handle the case where the loop reaches the terminating condition + // + result = v - 1; + for (const_reverse_iterator cur = mRanges.rbegin (); cur != mRanges.rend (); ++cur) { // See if v is in the range @@ -116,8 +120,6 @@ uint32 RangeSet::prevMissing (uint32 v) const break; } } - - result = v - 1; } bassert (result == absent || !hasValue (result)); From bdbeabde4a2e9052ee784ca1a44d2c963a97fca9 Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Thu, 4 Jul 2013 13:59:37 -0700 Subject: [PATCH 3/3] Remove unnecessary assignment --- modules/ripple_basics/containers/ripple_RangeSet.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/ripple_basics/containers/ripple_RangeSet.cpp b/modules/ripple_basics/containers/ripple_RangeSet.cpp index e0f84e7b4e..521d207c4f 100644 --- a/modules/ripple_basics/containers/ripple_RangeSet.cpp +++ b/modules/ripple_basics/containers/ripple_RangeSet.cpp @@ -112,10 +112,6 @@ uint32 RangeSet::prevMissing (uint32 v) const else result = absent; } - else - { - result = v - 1; - } break; }