Skip to content

Commit 49434c4

Browse files
committed
Close the file when finished parsing them
1 parent da1cb18 commit 49434c4

1 file changed

Lines changed: 17 additions & 7 deletions

File tree

migrate.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package migrate
22

33
import (
44
"bytes"
5+
"os"
56
"database/sql"
67
"errors"
78
"fmt"
@@ -228,14 +229,9 @@ func findMigrations(dir http.FileSystem) ([]*Migration, error) {
228229

229230
for _, info := range files {
230231
if strings.HasSuffix(info.Name(), ".sql") {
231-
file, err := dir.Open(info.Name())
232+
migration, err := migrationFromFile(dir, info)
232233
if err != nil {
233-
return nil, fmt.Errorf("Error while opening %s: %s", info.Name(), err)
234-
}
235-
236-
migration, err := ParseMigration(info.Name(), file)
237-
if err != nil {
238-
return nil, fmt.Errorf("Error while parsing %s: %s", info.Name(), err)
234+
return nil, err
239235
}
240236

241237
migrations = append(migrations, migration)
@@ -248,6 +244,20 @@ func findMigrations(dir http.FileSystem) ([]*Migration, error) {
248244
return migrations, nil
249245
}
250246

247+
func migrationFromFile(dir http.FileSystem, info os.FileInfo) (*Migration, error) {
248+
file, err := dir.Open(info.Name())
249+
if err != nil {
250+
return nil, fmt.Errorf("Error while opening %s: %s", info.Name(), err)
251+
}
252+
defer func () { _ = file.Close() }()
253+
254+
migration, err := ParseMigration(info.Name(), file)
255+
if err != nil {
256+
return nil, fmt.Errorf("Error while parsing %s: %s", info.Name(), err)
257+
}
258+
return migration, nil
259+
}
260+
251261
// Migrations from a bindata asset set.
252262
type AssetMigrationSource struct {
253263
// Asset should return content of file in path if exists

0 commit comments

Comments
 (0)