diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | lib/pstore.rb | 2 | ||||
-rw-r--r-- | test/test_pstore.rb | 10 |
3 files changed, 20 insertions, 0 deletions
@@ -1,3 +1,11 @@ +Sun Mar 13 16:07:58 2011 Shota Fukumori <sorah@tubusu.net> + + * lib/pstore.rb: Fix don't raise "nested transaction" when thread_safe + is true. Patch by Masaki Matsushita (Glass_saga). [ruby-dev:43337] + + * test/test_pstore.rb: Test for above. + Patch by Masaki Matsushita (Glass_saga) [ruby-dev:43337] + Sat Mar 12 04:12:41 2011 Tanaka Akira <akr@fsij.org> * ext/openssl/ossl_ssl_session.c: parenthesize macro arguments. diff --git a/lib/pstore.rb b/lib/pstore.rb index 3114eb567f..9fb0249f3c 100644 --- a/lib/pstore.rb +++ b/lib/pstore.rb @@ -341,6 +341,8 @@ class PStore end end value + rescue ThreadError + raise PStore::Error, "nested transaction" end private diff --git a/test/test_pstore.rb b/test/test_pstore.rb index 32d79ea2ba..b6f79251da 100644 --- a/test/test_pstore.rb +++ b/test/test_pstore.rb @@ -100,4 +100,14 @@ class PStoreTest < Test::Unit::TestCase File.unlink("pstore.tmp2.#{Process.pid}") rescue nil end end + + def test_nested_transaction_raises_error + assert_raise(PStore::Error) do + @pstore.transaction { @pstore.transaction { } } + end + pstore = PStore.new("pstore.tmp2.#{Process.pid}", true) + assert_raise(PStore::Error) do + pstore.transaction { pstore.transaction { } } + end + end end |