cmd/fix: eliminate data races in TestRewrite and gofmt

Fixes #35632

Change-Id: I55c3d53c2a6240868ec001866047a15ec8f91809
Reviewed-on: https://go-review.googlesource.com/c/go/+/207603
Run-TryBot: Bryan C. Mills <bcmills@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
diff --git a/src/cmd/fix/main.go b/src/cmd/fix/main.go
index 80b3c76..e72c663 100644
--- a/src/cmd/fix/main.go
+++ b/src/cmd/fix/main.go
@@ -203,10 +203,8 @@
 	return ioutil.WriteFile(f.Name(), newSrc, 0)
 }
 
-var gofmtBuf bytes.Buffer
-
 func gofmt(n interface{}) string {
-	gofmtBuf.Reset()
+	var gofmtBuf bytes.Buffer
 	if err := format.Node(&gofmtBuf, fset, n); err != nil {
 		return "<" + err.Error() + ">"
 	}
diff --git a/src/cmd/fix/main_test.go b/src/cmd/fix/main_test.go
index ee74f24..af16bca 100644
--- a/src/cmd/fix/main_test.go
+++ b/src/cmd/fix/main_test.go
@@ -76,6 +76,7 @@
 
 func TestRewrite(t *testing.T) {
 	for _, tt := range testCases {
+		tt := tt
 		t.Run(tt.Name, func(t *testing.T) {
 			t.Parallel()
 			// Apply fix: should get tt.Out.