summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorFlorian Frank <flori@ping.de>2013-02-20 23:47:56 +0100
committerFlorian Frank <flori@ping.de>2013-02-21 00:16:55 +0100
commit22da7f38a2670a9afbd2352c7265697c5db8afb4 (patch)
treeea4926b64a904d1305332daf263ffdf4a68012a7 /java
parentbe7320fe65ddb20998fa0d7bccfcddcbc7cb09b9 (diff)
downloadjson-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.java5
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 */
}
}