Index: src/org/jruby/util/Pack.java =================================================================== --- src/org/jruby/util/Pack.java (revision 8406) +++ src/org/jruby/util/Pack.java (working copy) @@ -899,21 +899,21 @@ // obtain a s = safeGet(encode); - while (((a = b64_xtable[s]) == -1) && encode.hasRemaining()) { + while (((a = b64_xtable[s & 0xff]) == -1) && encode.hasRemaining()) { s = safeGet(encode); } if (a == -1) break; // obtain b s = safeGet(encode); - while (((b = b64_xtable[s]) == -1) && encode.hasRemaining()) { + while (((b = b64_xtable[s & 0xff]) == -1) && encode.hasRemaining()) { s = safeGet(encode); } if (b == -1) break; // obtain c s = safeGet(encode); - while (((c = b64_xtable[s]) == -1) && encode.hasRemaining()) { + while (((c = b64_xtable[s & 0xff]) == -1) && encode.hasRemaining()) { if (s == '=') break; s = safeGet(encode); } @@ -926,7 +926,7 @@ // obtain d s = safeGet(encode); - while (((d = b64_xtable[s]) == -1) && encode.hasRemaining()) { + while (((d = b64_xtable[s & 0xff]) == -1) && encode.hasRemaining()) { if (s == '=') break; s = safeGet(encode); }