aboutsummaryrefslogtreecommitdiff
path: root/src/database/sql/sql.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/database/sql/sql.go')
-rw-r--r--src/database/sql/sql.go22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go
index d3803e85c3..a549e859a4 100644
--- a/src/database/sql/sql.go
+++ b/src/database/sql/sql.go
@@ -408,17 +408,19 @@ func (dc *driverConn) Close() error {
}
func (dc *driverConn) finalClose() error {
- dc.Lock()
-
- for si := range dc.openStmt {
- si.Close()
- }
- dc.openStmt = nil
+ var err error
+ withLock(dc, func() {
+ defer func() { // In case si.Close panics.
+ dc.openStmt = nil
+ dc.finalClosed = true
+ err = dc.ci.Close()
+ dc.ci = nil
+ }()
- err := dc.ci.Close()
- dc.ci = nil
- dc.finalClosed = true
- dc.Unlock()
+ for si := range dc.openStmt {
+ si.Close()
+ }
+ })
dc.db.mu.Lock()
dc.db.numOpen--