1// run 2 3// Copyright 2014 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file. 6 7// Issue 8047. Stack copier shouldn't crash if there 8// is a nil defer. 9 10package main 11 12func stackit(n int) { 13 if n == 0 { 14 return 15 } 16 stackit(n - 1) 17} 18 19func main() { 20 defer func() { 21 // catch & ignore panic from nil defer below 22 err := recover() 23 if err == nil { 24 panic("defer of nil func didn't panic") 25 } 26 }() 27 defer ((func())(nil))() 28 stackit(1000) 29} 30