diff options
author | Florian Frank <flori@ping.de> | 2013-02-20 23:47:56 +0100 |
---|---|---|
committer | Florian Frank <flori@ping.de> | 2013-02-21 00:16:55 +0100 |
commit | 22da7f38a2670a9afbd2352c7265697c5db8afb4 (patch) | |
tree | ea4926b64a904d1305332daf263ffdf4a68012a7 /java | |
parent | be7320fe65ddb20998fa0d7bccfcddcbc7cb09b9 (diff) | |
download | json-22da7f38a2670a9afbd2352c7265697c5db8afb4.tar.gz |
Try to convert first with to_hash, then to_h
rb_convert_type doesn't return if conversion fails, so use
rb_check_convert_type and the raise vi rb_convert_type. Make sure, that
this behaviour is consisten across all generator implementations.
Fixes https://github.com/flori/json/issues/162
Diffstat (limited to 'java')
-rw-r--r-- | java/src/json/ext/OptionsReader.java | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/java/src/json/ext/OptionsReader.java b/java/src/json/ext/OptionsReader.java index 6835735..8212503 100644 --- a/java/src/json/ext/OptionsReader.java +++ b/java/src/json/ext/OptionsReader.java @@ -24,13 +24,14 @@ final class OptionsReader { OptionsReader(ThreadContext context, IRubyObject vOpts) { this.context = context; this.runtime = context.getRuntime(); - if (vOpts == null || vOpts.isNil()) { opts = null; } else if (vOpts.respondsTo("to_hash")) { opts = vOpts.convertToHash(); - } else { + } else if (vOpts.respondsTo("to_h")) { opts = vOpts.callMethod(context, "to_h").convertToHash(); + } else { + opts = vOpts.convertToHash(); /* Should just raise the correct TypeError */ } } |