summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/json/generator/generator.c2
-rwxr-xr-xtest/json/json_generator_test.rb5
2 files changed, 6 insertions, 1 deletions
diff --git a/ext/json/generator/generator.c b/ext/json/generator/generator.c
index bb390d1b25..0833885370 100644
--- a/ext/json/generator/generator.c
+++ b/ext/json/generator/generator.c
@@ -1626,7 +1626,7 @@ static int configure_state_i(VALUE key, VALUE val, VALUE _arg)
else if (key == sym_script_safe) { state->script_safe = RTEST(val); }
else if (key == sym_escape_slash) { state->script_safe = RTEST(val); }
else if (key == sym_strict) { state->strict = RTEST(val); }
- else if (key == sym_as_json) { state->as_json = rb_convert_type(val, T_DATA, "Proc", "to_proc"); }
+ else if (key == sym_as_json) { state->as_json = RTEST(val) ? rb_convert_type(val, T_DATA, "Proc", "to_proc") : Qfalse; }
return ST_CONTINUE;
}
diff --git a/test/json/json_generator_test.rb b/test/json/json_generator_test.rb
index 942802d62f..c67cd3349c 100755
--- a/test/json/json_generator_test.rb
+++ b/test/json/json_generator_test.rb
@@ -399,6 +399,11 @@ class JSONGeneratorTest < Test::Unit::TestCase
assert_equal :bar, state_hash[:foo]
end
+ def test_json_state_to_h_roundtrip
+ state = JSON.state.new
+ assert_equal state.to_h, JSON.state.new(state.to_h).to_h
+ end
+
def test_json_generate
assert_raise JSON::GeneratorError do
generate(["\xea"])