diff options
author | John Firebaugh <john_firebaugh@us.ibm.com> | 2011-05-17 15:07:32 -0700 |
---|---|---|
committer | John Firebaugh <john_firebaugh@us.ibm.com> | 2011-05-18 11:51:09 -0700 |
commit | 1a9725371131300e3230b4b9c14e669d334f4152 (patch) | |
tree | 71351cad3478b74667a0658cc19badbe61e2ec3f /java/src/json/ext/Parser.java | |
parent | 65d259b09e1256e56f301d473a9a083315dc305d (diff) | |
download | json-1a9725371131300e3230b4b9c14e669d334f4152.tar.gz |
Fix memory leak when used from multiple JRuby runtimes.
Diffstat (limited to 'java/src/json/ext/Parser.java')
-rw-r--r-- | java/src/json/ext/Parser.java | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/java/src/json/ext/Parser.java b/java/src/json/ext/Parser.java index c92600e..a3aad13 100644 --- a/java/src/json/ext/Parser.java +++ b/java/src/json/ext/Parser.java @@ -176,8 +176,8 @@ public class Parser extends RubyObject { if (info.encodingsSupported()) { RubyEncoding encoding = (RubyEncoding)source.encoding(context); - if (encoding != info.ascii8bit) { - return (RubyString)source.encode(context, info.utf8); + if (encoding != info.ascii8bit.get()) { + return (RubyString)source.encode(context, info.utf8.get()); } String sniffedEncoding = sniffByteList(bl); @@ -188,7 +188,7 @@ public class Parser extends RubyObject { String sniffedEncoding = sniffByteList(bl); if (sniffedEncoding == null) return source; // assume UTF-8 Ruby runtime = context.getRuntime(); - return (RubyString)info.jsonModule. + return (RubyString)info.jsonModule.get(). callMethod(context, "iconv", new IRubyObject[] { runtime.newString("utf-8"), @@ -218,7 +218,7 @@ public class Parser extends RubyObject { private RubyString reinterpretEncoding(ThreadContext context, RubyString str, String sniffedEncoding) { RubyEncoding actualEncoding = info.getEncoding(context, sniffedEncoding); - RubyEncoding targetEncoding = info.utf8; + RubyEncoding targetEncoding = info.utf8.get(); RubyString dup = (RubyString)str.dup(); dup.force_encoding(context, actualEncoding); return (RubyString)dup.encode_bang(context, targetEncoding); @@ -251,7 +251,7 @@ public class Parser extends RubyObject { * set to <code>nil</code> or <code>false</code>, and a String if not. */ private RubyString getCreateId(ThreadContext context) { - IRubyObject v = info.jsonModule.callMethod(context, "create_id"); + IRubyObject v = info.jsonModule.get().callMethod(context, "create_id"); return v.isTrue() ? v.convertToString() : null; } @@ -1985,7 +1985,7 @@ case 5: IRubyObject vKlassName = result.op_aref(context, parser.createId); if (!vKlassName.isNil()) { // might throw ArgumentError, we let it propagate - IRubyObject klass = parser.info.jsonModule. + IRubyObject klass = parser.info.jsonModule.get(). callMethod(context, "deep_const_get", vKlassName); if (klass.respondsTo("json_creatable?") && klass.callMethod(context, "json_creatable?").isTrue()) { @@ -2275,7 +2275,7 @@ case 5: * @param name The constant name */ private IRubyObject getConstant(String name) { - return parser.info.jsonModule.getConstant(name); + return parser.info.jsonModule.get().getConstant(name); } private RaiseException newException(String className, String message) { |