Commit 0aa13c99 authored by Fazlul Shahriar's avatar Fazlul Shahriar Committed by Robert Griesemer

gofmt: race condition in error reporting and setting exit code

How to reproduce:

	$ mkdir /tmp/foo
	$ cp /dev/null /tmp/foo/bar.go
	$ chmod -r /tmp/foo/bar.go
	$ gofmt /tmp/foo
	open /tmp/foo/bar.go: permission denied
	$ echo $?		# should echo 2
	0
	$

Maybe you need to put a call to time.Sleep at the beginning of report().

R=gri
CC=golang-dev
https://golang.org/cl/164073
parent d8bc797e
......@@ -150,6 +150,7 @@ func (v fileVisitor) VisitFile(path string, d *os.Dir) {
func walkDir(path string) {
// start an error handler
done := make(chan bool);
v := make(fileVisitor);
go func() {
for err := range v {
......@@ -157,10 +158,12 @@ func walkDir(path string) {
report(err)
}
}
done <- true;
}();
// walk the tree
pathutil.Walk(path, v, v);
close(v);
close(v); // terminate error handler loop
<-done; // wait for all errors to be reported
}
......
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