diff --git a/lib/pstore.rb b/lib/pstore.rb index 0d89e75..8c32d78 100644 --- a/lib/pstore.rb +++ b/lib/pstore.rb @@ -439,7 +439,7 @@ def [](key) def fetch(key, default=PStore::Error) in_transaction unless @table.key? key - if default == PStore::Error + if PStore::Error.equal?(default) raise PStore::Error, format("undefined key '%s'", key) else return default diff --git a/test/test_pstore.rb b/test/test_pstore.rb index 33801e1..98d4459 100644 --- a/test/test_pstore.rb +++ b/test/test_pstore.rb @@ -235,4 +235,13 @@ def test_commit_targets_the_owning_store ensure File.unlink(second_file) rescue nil end + + def test_fetch_compares_missing_default_by_identity + default = Object.new + def default.==(_other) + true + end + + assert_same(default, @pstore.transaction(true) { @pstore.fetch(:missing, default) }) + end end