diff --git a/extras/generate_latest_map b/extras/generate_latest_map index 0f831799c..3ae35b398 100755 --- a/extras/generate_latest_map +++ b/extras/generate_latest_map @@ -96,14 +96,16 @@ function generate_latest_map() { loop: for i < len(m) { switch { - case j >= len(n) || m[i].key < n[j].key: - i++ + case j >= len(n): + return m case m[i].key == n[j].key: if m[i].Timestamp.Before(n[j].Timestamp) { break loop } i++ j++ + case m[i].key < n[j].key: + i++ default: break loop } @@ -117,9 +119,9 @@ function generate_latest_map() { for i < len(m) { switch { - case j >= len(n) || m[i].key < n[j].key: - out = append(out, m[i]) - i++ + case j >= len(n): + out = append(out, m[i:]...) + return out case m[i].key == n[j].key: if m[i].Timestamp.Before(n[j].Timestamp) { out = append(out, n[j]) @@ -128,6 +130,9 @@ function generate_latest_map() { } i++ j++ + case m[i].key < n[j].key: + out = append(out, m[i]) + i++ default: out = append(out, n[j]) j++ diff --git a/report/latest_map_generated.go b/report/latest_map_generated.go index 626b80988..97ce72382 100644 --- a/report/latest_map_generated.go +++ b/report/latest_map_generated.go @@ -64,14 +64,16 @@ func (m StringLatestMap) Merge(n StringLatestMap) StringLatestMap { loop: for i < len(m) { switch { - case j >= len(n) || m[i].key < n[j].key: - i++ + case j >= len(n): + return m case m[i].key == n[j].key: if m[i].Timestamp.Before(n[j].Timestamp) { break loop } i++ j++ + case m[i].key < n[j].key: + i++ default: break loop } @@ -85,9 +87,9 @@ loop: for i < len(m) { switch { - case j >= len(n) || m[i].key < n[j].key: - out = append(out, m[i]) - i++ + case j >= len(n): + out = append(out, m[i:]...) + return out case m[i].key == n[j].key: if m[i].Timestamp.Before(n[j].Timestamp) { out = append(out, n[j]) @@ -96,6 +98,9 @@ loop: } i++ j++ + case m[i].key < n[j].key: + out = append(out, m[i]) + i++ default: out = append(out, n[j]) j++ @@ -311,14 +316,16 @@ func (m NodeControlDataLatestMap) Merge(n NodeControlDataLatestMap) NodeControlD loop: for i < len(m) { switch { - case j >= len(n) || m[i].key < n[j].key: - i++ + case j >= len(n): + return m case m[i].key == n[j].key: if m[i].Timestamp.Before(n[j].Timestamp) { break loop } i++ j++ + case m[i].key < n[j].key: + i++ default: break loop } @@ -332,9 +339,9 @@ loop: for i < len(m) { switch { - case j >= len(n) || m[i].key < n[j].key: - out = append(out, m[i]) - i++ + case j >= len(n): + out = append(out, m[i:]...) + return out case m[i].key == n[j].key: if m[i].Timestamp.Before(n[j].Timestamp) { out = append(out, n[j]) @@ -343,6 +350,9 @@ loop: } i++ j++ + case m[i].key < n[j].key: + out = append(out, m[i]) + i++ default: out = append(out, n[j]) j++