// run | |
// Copyright 2014 The Go Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style | |
// license that can be found in the LICENSE file. | |
// Issue 8047. Stack copier shouldn't crash if there | |
// is a nil defer. | |
package main | |
func stackit(n int) { | |
if n == 0 { | |
return | |
} | |
stackit(n - 1) | |
} | |
func main() { | |
defer func() { | |
// catch & ignore panic from nil defer below | |
err := recover() | |
if err == nil { | |
panic("defer of nil func didn't panic") | |
} | |
}() | |
defer ((func())(nil))() | |
stackit(1000) | |
} |