summaryrefslogtreecommitdiff
path: root/ext/java
diff options
context:
space:
mode:
authorCharles Oliver Nutter <headius@headius.com>2017-05-31 10:25:54 -0500
committerCharles Oliver Nutter <headius@headius.com>2017-05-31 10:25:54 -0500
commit8c21999692adef512af246b0c7a037857ae5aea1 (patch)
treec7bd461347dedf0b4921d0dad030822ca2fe49b4 /ext/java
parente8cfcfedaa27c9a091491b2cff46a167f7bc4305 (diff)
downloadpsych-8c21999692adef512af246b0c7a037857ae5aea1.tar.gz
Fall back on UTF-8 when an IO-like object's Charset isn't found.
Fixes #319.
Diffstat (limited to 'ext/java')
-rw-r--r--ext/java/PsychParser.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/ext/java/PsychParser.java b/ext/java/PsychParser.java
index ec00501..b3e747e 100644
--- a/ext/java/PsychParser.java
+++ b/ext/java/PsychParser.java
@@ -158,10 +158,15 @@ public class PsychParser extends RubyObject {
// fall back on IOInputStream, using default charset
if (yaml.respondsTo("read")) {
- Encoding enc = (yaml instanceof RubyIO)
- ? ((RubyIO)yaml).getReadEncoding()
- : UTF8Encoding.INSTANCE;
- Charset charset = enc.getCharset();
+ Charset charset = null;
+ if (yaml instanceof RubyIO) {
+ Encoding enc = ((RubyIO) yaml).getReadEncoding();
+ charset = enc.getCharset();
+ }
+ if (charset == null) {
+ // If we can't get it from the IO or it doesn't have a charset, fall back on UTF-8
+ charset = UTF8Encoding.INSTANCE.getCharset();
+ }
return new StreamReader(new InputStreamReader(new IOInputStream(yaml), charset));
} else {
throw runtime.newTypeError(yaml, runtime.getIO());