Skip to content

Commit 34f105c

Browse files
committedNov 16, 2013
infile: new deferredClose func instead of lambda funcs
1 parent d7e2ac4 commit 34f105c

File tree

1 file changed

+10
-15
lines changed

1 file changed

+10
-15
lines changed
 

‎infile.go

+10-15
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,13 @@ func DeregisterReaderHandler(name string) {
7575
delete(readerRegister, name)
7676
}
7777

78+
func deferredClose(err *error, closer io.Closer) {
79+
closeErr := closer.Close()
80+
if *err == nil {
81+
*err = closeErr
82+
}
83+
}
84+
7885
func (mc *mysqlConn) handleInFileRequest(name string) (err error) {
7986
var rdr io.Reader
8087
var data []byte
@@ -86,14 +93,8 @@ func (mc *mysqlConn) handleInFileRequest(name string) (err error) {
8693
if rdr != nil {
8794
data = make([]byte, 4+mc.maxWriteSize)
8895

89-
if rdc, ok := rdr.(io.ReadCloser); ok {
90-
defer func() {
91-
if err == nil {
92-
err = rdc.Close()
93-
} else {
94-
rdc.Close()
95-
}
96-
}()
96+
if cl, ok := rdr.(io.Closer); ok {
97+
defer deferredClose(&err, cl)
9798
}
9899
} else {
99100
err = fmt.Errorf("Reader '%s' is <nil>", name)
@@ -108,13 +109,7 @@ func (mc *mysqlConn) handleInFileRequest(name string) (err error) {
108109
var fi os.FileInfo
109110

110111
if file, err = os.Open(name); err == nil {
111-
defer func() {
112-
if err == nil {
113-
err = file.Close()
114-
} else {
115-
file.Close()
116-
}
117-
}()
112+
defer deferredClose(&err, file)
118113

119114
// get file size
120115
if fi, err = file.Stat(); err == nil {

0 commit comments

Comments
 (0)
Please sign in to comment.