diff options
author | John Shahid <jvshahid@gmail.com> | 2013-01-15 07:59:24 -0500 |
---|---|---|
committer | Florian Frank <flori@ping.de> | 2013-02-04 23:48:51 +0100 |
commit | 241622f2a78f17ec9ed86cac992a44926e7a1133 (patch) | |
tree | 48679810ee1d414f4b44bad98d42380428979f3a | |
parent | d7b18ba149400971a1415468fd865f8d4794d789 (diff) | |
download | json-241622f2a78f17ec9ed86cac992a44926e7a1133.tar.gz |
fix a bug in the JRuby implementation. getInstanceVariable() can return a null which causes NPE.
-rw-r--r-- | java/src/json/ext/GeneratorState.java | 3 | ||||
-rwxr-xr-x | tests/test_json_generate.rb | 1 |
2 files changed, 3 insertions, 1 deletions
diff --git a/java/src/json/ext/GeneratorState.java b/java/src/json/ext/GeneratorState.java index 658d6d0..3065307 100644 --- a/java/src/json/ext/GeneratorState.java +++ b/java/src/json/ext/GeneratorState.java @@ -263,7 +263,8 @@ public class GeneratorState extends RubyObject { if (getMetaClass().isMethodBound(name, true)) { return send(context, vName, Block.NULL_BLOCK); } else { - return getInstanceVariables().getInstanceVariable("@" + name); + IRubyObject value = getInstanceVariables().getInstanceVariable("@" + name); + return value == null ? context.nil : value; } } diff --git a/tests/test_json_generate.rb b/tests/test_json_generate.rb index 5947bf6..978c625 100755 --- a/tests/test_json_generate.rb +++ b/tests/test_json_generate.rb @@ -276,6 +276,7 @@ EOT def test_hash_likeness_set_symbol state = JSON.state.new assert_equal nil, state[:foo] + assert_equal nil.class, state[:foo].class assert_equal nil, state['foo'] state[:foo] = :bar assert_equal :bar, state[:foo] |