Skip to content

Commit 254d6fd

Browse files
committed
ensure should not close closed statements
1 parent 0bb8b75 commit 254d6fd

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

lib/sqlite3/database.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def prepare sql
9494
begin
9595
yield stmt
9696
ensure
97-
stmt.close
97+
stmt.close unless stmt.closed?
9898
end
9999
end
100100

test/test_database.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,15 @@ def test_prepare
107107
assert_instance_of(SQLite3::Statement, stmt)
108108
end
109109

110+
def test_block_prepare_does_not_double_close
111+
db = SQLite3::Database.new(':memory:')
112+
r = db.prepare('select "hello world"') do |stmt|
113+
stmt.close
114+
:foo
115+
end
116+
assert_equal :foo, r
117+
end
118+
110119
def test_total_changes
111120
db = SQLite3::Database.new(':memory:')
112121
db.execute("create table foo ( a integer primary key, b text )")

0 commit comments

Comments
 (0)