From 70e58a2f9b2531c8e18a2e80051ffe6f1f08a33d Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 14 Mar 2012 14:47:13 -0400 Subject: [PATCH] io/ioutil: fix crash when Stat fails Fixes #3320. R=golang-dev, gri CC=golang-dev https://golang.org/cl/5824051 --- src/pkg/io/ioutil/ioutil.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/pkg/io/ioutil/ioutil.go b/src/pkg/io/ioutil/ioutil.go index 180afc2c22..f072b8c754 100644 --- a/src/pkg/io/ioutil/ioutil.go +++ b/src/pkg/io/ioutil/ioutil.go @@ -53,10 +53,13 @@ func ReadFile(filename string) ([]byte, error) { defer f.Close() // It's a good but not certain bet that FileInfo will tell us exactly how much to // read, so let's try it but be prepared for the answer to be wrong. - fi, err := f.Stat() var n int64 - if size := fi.Size(); err == nil && size < 2e9 { // Don't preallocate a huge buffer, just in case. - n = size + + if fi, err := f.Stat(); err == nil { + // Don't preallocate a huge buffer, just in case. + if size := fi.Size(); size < 1e9 { + n = size + } } // As initial capacity for readAll, use n + a little extra in case Size is zero, // and to avoid another allocation after Read has filled the buffer. The readAll -- 2.48.1