diff options
author | mattn <mattn.jp@gmail.com> | 2016-10-28 08:55:17 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-28 08:55:17 +0900 |
commit | 955dae4ebd0ea6e242d3ee953062cedb2f4381ff (patch) | |
tree | 0fb90e79837e067eaec23b243a9c58b15294271e /backup.go | |
parent | Merge pull request #333 from nyarly/master (diff) | |
parent | fix double free in SQLiteBackup.Close() on error (diff) | |
download | golite-955dae4ebd0ea6e242d3ee953062cedb2f4381ff.tar.gz golite-955dae4ebd0ea6e242d3ee953062cedb2f4381ff.tar.xz |
Merge pull request #345 from joeshaw/backup-finalizer-fix
fix double free in SQLiteBackup.Close() on error
Diffstat (limited to 'backup.go')
-rw-r--r-- | backup.go | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -65,10 +65,15 @@ func (b *SQLiteBackup) Finish() error { func (b *SQLiteBackup) Close() error { ret := C.sqlite3_backup_finish(b.b) + + // sqlite3_backup_finish() never fails, it just returns the + // error code from previous operations, so clean up before + // checking and returning an error + b.b = nil + runtime.SetFinalizer(b, nil) + if ret != 0 { return Error{Code: ErrNo(ret)} } - b.b = nil - runtime.SetFinalizer(b, nil) return nil } |