]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile/internal/syntax: avoid deadlock
authorJosh Bleecher Snyder <josharian@gmail.com>
Tue, 1 Nov 2016 19:27:26 +0000 (12:27 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Tue, 1 Nov 2016 20:19:01 +0000 (20:19 +0000)
When the err from ReadFile is non-nil, we call t.Fatal(err).
Switch t.Fatal to t.Error + return.
ensure that close(results) happens on that code path as well.

Updates #17697.

Change-Id: Ifaacf27a76c175446d642086ff32f4386428080d
Reviewed-on: https://go-review.googlesource.com/32486
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Robert Griesemer <gri@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/compile/internal/syntax/parser_test.go

index 780f10835cff7b8dcfef4b6fd0b6a9e9ccd3831a..3cb12c23d58d4b013dc820c9ef83ddf8b97581ab 100644 (file)
@@ -44,6 +44,7 @@ func TestStdLib(t *testing.T) {
 
        results := make(chan parseResult)
        go func() {
+               defer close(results)
                for _, dir := range []string{
                        runtime.GOROOT(),
                        //"/Users/gri/src",
@@ -54,7 +55,8 @@ func TestStdLib(t *testing.T) {
                                }
                                ast, err := ReadFile(filename, nil, nil, 0)
                                if err != nil {
-                                       t.Fatal(err)
+                                       t.Error(err)
+                                       return
                                }
                                if *verify {
                                        verifyPrint(filename, ast)
@@ -62,7 +64,6 @@ func TestStdLib(t *testing.T) {
                                results <- parseResult{filename, ast.Lines}
                        })
                }
-               close(results)
        }()
 
        var count, lines int