Skip to content

Commit

Permalink
Showing 1 changed file with 13 additions and 10 deletions.
23 changes: 13 additions & 10 deletions core/src/main/java/org/jruby/RubyEncoding.java
Original file line number Diff line number Diff line change
@@ -27,6 +27,7 @@

import java.lang.ref.SoftReference;
import java.lang.reflect.Field;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
@@ -281,14 +282,15 @@ public final byte[] encode(CharSequence cs) {
if (cs.length() > CHAR_THRESHOLD) {
buffer = UTF8.encode(CharBuffer.wrap(cs));
} else {
buffer = byteBuffer;
Buffer buf = buffer = byteBuffer;
CharBuffer cbuffer = charBuffer;
buffer.clear();
cbuffer.clear();
Buffer cbuf = cbuffer;
buf.clear();
cbuf.clear();
cbuffer.put(cs.toString());
cbuffer.flip();
cbuf.flip();
encoder.encode(cbuffer, buffer, true);
buffer.flip();
buf.flip();
}

byte[] bytes = new byte[buffer.limit()];
@@ -301,14 +303,15 @@ public final String decode(byte[] bytes, int start, int length) {
if (length > CHAR_THRESHOLD) {
cbuffer = UTF8.decode(ByteBuffer.wrap(bytes, start, length));
} else {
cbuffer = charBuffer;
Buffer cbuf = cbuffer = charBuffer;
ByteBuffer buffer = byteBuffer;
cbuffer.clear();
buffer.clear();
Buffer buf = buffer;
cbuf.clear();
buf.clear();
buffer.put(bytes, start, length);
buffer.flip();
buf.flip();
decoder.decode(buffer, cbuffer, true);
cbuffer.flip();
cbuf.flip();
}

return cbuffer.toString();

0 comments on commit 33cf402

Please sign in to comment.