Commit c016fd32 by Ian Lance Taylor

runtime: don't assume that _ = *s will panic if s is nil

    
    With the gc toolchain apparently
            var s *string
            _ = *s
    is enough to panic with a nil pointer dereference. The gccgo compiler
    will simply discard the dereference, which I think is a reasonable and
    acceptable optimization. Change the tests to use an exported variable
    instead. The tests are not currently run, but they will be with a
    later patch to gotools.
    
    Reviewed-on: https://go-review.googlesource.com/46450

From-SVN: r249562
parent 3b0ddadf
b5c9fe259ec43f8079581c3bea0f1d12d85213a7
8804c912363320e0c229c5a471fb6f4b9e5965e6
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
......@@ -13,6 +13,8 @@ func init() {
register("Crash", Crash)
}
var NilPointer *string
func test(name string) {
defer func() {
if x := recover(); x != nil {
......@@ -21,8 +23,7 @@ func test(name string) {
fmt.Printf(" done\n")
}()
fmt.Printf("%s:", name)
var s *string
_ = *s
*NilPointer = name
fmt.Print("SHOULD NOT BE HERE")
}
......
......@@ -13,6 +13,8 @@ func init() {
register("Crash", Crash)
}
var NilPointer *string
func test(name string) {
defer func() {
if x := recover(); x != nil {
......@@ -21,8 +23,7 @@ func test(name string) {
fmt.Printf(" done\n")
}()
fmt.Printf("%s:", name)
var s *string
_ = *s
*NilPointer = name
fmt.Print("SHOULD NOT BE HERE")
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment