aboutsummaryrefslogtreecommitdiff
path: root/src/container
diff options
context:
space:
mode:
authorwuyunzhou <yunzhouwu@gmail.com>2017-05-13 15:41:15 +0800
committerRobert Griesemer <gri@golang.org>2017-05-13 19:10:24 +0000
commitee57e36dfa6879c05ac6717c29f2df5b546e1256 (patch)
tree21e9e32cfe592d63f3b68d269d72da84ce4e3d2a /src/container
parent1fcd7861e388082b59827e9ce9a7eaaea877f881 (diff)
downloadgo-ee57e36dfa6879c05ac6717c29f2df5b546e1256.tar.gz
go-ee57e36dfa6879c05ac6717c29f2df5b546e1256.zip
container/heap: avoid up() invoke if down() success at heap.Remove()
Change-Id: I6c210e0c23ca533e1f303f88ef9dcb629a294a2a Reviewed-on: https://go-review.googlesource.com/43472 Reviewed-by: Robert Griesemer <gri@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org>
Diffstat (limited to 'src/container')
-rw-r--r--src/container/heap/heap.go5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/container/heap/heap.go b/src/container/heap/heap.go
index af05261c10..b2c64276c8 100644
--- a/src/container/heap/heap.go
+++ b/src/container/heap/heap.go
@@ -72,8 +72,9 @@ func Remove(h Interface, i int) interface{} {
n := h.Len() - 1
if n != i {
h.Swap(i, n)
- down(h, i, n)
- up(h, i)
+ if !down(h, i, n) {
+ up(h, i)
+ }
}
return h.Pop()
}