maintner: fix infinite loop bug in GitCommit.HasAncestor
Fix a stupid bug fortunately found before production.
Add the test that caught it.
Updates golang/go#20222
Change-Id: Ie988d80dec18e5d0fede7a31e3b6cce62b050f5f
Reviewed-on: https://go-review.googlesource.com/43555
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
diff --git a/maintner/git.go b/maintner/git.go
index 13a3e0c..80d0d0e 100644
--- a/maintner/git.go
+++ b/maintner/git.go
@@ -80,7 +80,7 @@
}
func (gc *GitCommit) hasAncestor(ancestor *GitCommit, checked map[*GitCommit]bool) bool {
- if v, ok := checked[ancestor]; ok {
+ if v, ok := checked[gc]; ok {
return v
}
checked[gc] = false
diff --git a/maintner/godata/godata_test.go b/maintner/godata/godata_test.go
index 76f6a6d..18b6dcb 100644
--- a/maintner/godata/godata_test.go
+++ b/maintner/godata/godata_test.go
@@ -57,6 +57,9 @@
{"3b5637ff2bd5c03479780995e7a35c48222157c1", "0bb0b61d6a85b2a1a33dcbc418089656f2754d32", true},
{"0bb0b61d6a85b2a1a33dcbc418089656f2754d32", "3b5637ff2bd5c03479780995e7a35c48222157c1", false},
+ {"8f06e217eac10bae4993ca371ade35fecd26270e", "22f1b56dab29d397d2bdbdd603d85e60fb678089", true},
+ {"22f1b56dab29d397d2bdbdd603d85e60fb678089", "8f06e217eac10bae4993ca371ade35fecd26270e", false},
+
// Same on both sides:
{"0bb0b61d6a85b2a1a33dcbc418089656f2754d32", "0bb0b61d6a85b2a1a33dcbc418089656f2754d32", false},
{"3b5637ff2bd5c03479780995e7a35c48222157c1", "3b5637ff2bd5c03479780995e7a35c48222157c1", false},