<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>build_lib/jcodings.jar</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff></diff>
      <filename>build_lib/joni.jar</filename>
    </modified>
    <modified>
      <diff>@@ -50,7 +50,7 @@ import static org.jruby.util.Numeric.i_gcd;
 import static org.jruby.util.Numeric.i_ilog2;
 import static org.jruby.util.Numeric.ldexp;
 
-import org.joni.encoding.specific.ASCIIEncoding;
+import org.jcodings.specific.ASCIIEncoding;
 import org.jruby.anno.JRubyClass;
 import org.jruby.anno.JRubyMethod;
 import org.jruby.common.IRubyWarnings;</diff>
      <filename>src/org/jruby/RubyRational.java</filename>
    </modified>
    <modified>
      <diff>@@ -47,7 +47,7 @@ import org.joni.Regex;
 import org.joni.Region;
 import org.joni.Syntax;
 import org.joni.WarnCallback;
-import org.joni.encoding.Encoding;
+import org.jcodings.Encoding;
 import org.joni.exception.JOniException;
 
 import static org.jruby.anno.FrameField.*;</diff>
      <filename>src/org/jruby/RubyRegexp.java</filename>
    </modified>
    <modified>
      <diff>@@ -48,8 +48,8 @@ import org.joni.Matcher;
 import org.joni.Option;
 import org.joni.Regex;
 import org.joni.Region;
-import org.joni.encoding.Encoding;
-import org.joni.encoding.specific.ASCIIEncoding;
+import org.jcodings.Encoding;
+import org.jcodings.specific.ASCIIEncoding;
 import org.jruby.anno.JRubyClass;
 import org.jruby.anno.JRubyMethod;
 import org.jruby.exceptions.RaiseException;
@@ -2202,19 +2202,22 @@ public class RubyString extends RubyObject {
     
     private RubyArray split(ThreadContext context, IRubyObject pat, boolean limit, int lim, int i) {
         Ruby runtime = context.getRuntime();
-        
+
         final Regex regex = getPattern(pat, true).getPattern();
         int beg, end, start;
-        
+
         int begin = value.begin;
         start = begin;
         beg = 0;
         
-        int range = value.begin + value.realSize;
-        final Matcher matcher = regex.matcher(value.bytes, value.begin, range);
+        int range = begin + value.realSize;
+        byte[]bytes = value.bytes;
+        final Matcher matcher = regex.matcher(bytes, begin, range);
         
         boolean lastNull = false;
         RubyArray result = runtime.newArray();
+        final Encoding enc = regex.getEncoding();
+        
         if (regex.numberOfCaptures() == 0) { // shorter path, no captures defined, no region will be returned 
             while ((end = matcher.search(start, range, Option.NONE)) &gt;= 0) {
                 if (start == end + begin &amp;&amp; matcher.getBegin() == matcher.getEnd()) {
@@ -2222,13 +2225,13 @@ public class RubyString extends RubyObject {
                         result.append(newEmptyString(runtime, getMetaClass()));
                         break;
                     } else if (lastNull) {
-                        result.append(substr(runtime, beg, regex.getEncoding().length(value.bytes[begin + beg])));
+                        result.append(substr(runtime, beg, enc.length(bytes, begin + beg, range)));
                         beg = start - begin;
                     } else {
                         if (start == range) {
                             start++;
                         } else {
-                            start += regex.getEncoding().length(value.bytes[start]);
+                            start += enc.length(bytes, start, range);
                         }
                         lastNull = true;
                         continue;
@@ -2249,13 +2252,13 @@ public class RubyString extends RubyObject {
                         result.append(newEmptyString(runtime, getMetaClass()));
                         break;
                     } else if (lastNull) {
-                        result.append(substr(beg, regex.getEncoding().length(value.bytes[begin + beg])));
+                        result.append(substr(beg, enc.length(bytes, begin + beg, range)));
                         beg = start - begin;
                     } else {
                         if (start == range) {
                             start++;
                         } else {
-                            start += regex.getEncoding().length(value.bytes[start]);
+                            start += enc.length(bytes, start, range);
                         }
                         lastNull = true;
                         continue;</diff>
      <filename>src/org/jruby/RubyString.java</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@ import org.joni.Matcher;
 import org.joni.Option;
 import org.joni.Regex;
 import org.joni.Region;
-import org.joni.encoding.Encoding;
+import org.jcodings.Encoding;
 import org.jruby.anno.JRubyClass;
 import org.jruby.anno.JRubyMethod;
 import org.jruby.common.IRubyWarnings.ID;</diff>
      <filename>src/org/jruby/RubyStringScanner.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,7 @@
 
 package org.jruby.util;
 
-import org.joni.encoding.Encoding;
+import org.jcodings.Encoding;
 import org.jruby.Ruby;
 import org.jruby.runtime.builtin.IRubyObject;
 </diff>
      <filename>src/org/jruby/util/KCode.java</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,7 @@
 package org.jruby.util;
 
 import org.joni.Regex;
-import org.joni.encoding.specific.ASCIIEncoding;
+import org.jcodings.specific.ASCIIEncoding;
 import org.jruby.Ruby;
 import org.jruby.RubyBignum;
 import org.jruby.RubyFixnum;</diff>
      <filename>src/org/jruby/util/Numeric.java</filename>
    </modified>
    <modified>
      <diff>@@ -38,9 +38,9 @@ import java.math.BigInteger;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 
-import org.joni.encoding.specific.ASCIIEncoding;
-import org.joni.encoding.specific.UTF8Encoding;
-import org.joni.encoding.unicode.UnicodeEncoding;
+import org.jcodings.specific.ASCIIEncoding;
+import org.jcodings.specific.UTF8Encoding;
+import org.jcodings.unicode.UnicodeEncoding;
 import org.jruby.Ruby;
 import org.jruby.RubyArray;
 import org.jruby.RubyBignum;
@@ -1680,7 +1680,7 @@ public class Pack {
                     }
                     break;
                 case 'U' :
-                    UnicodeEncoding enc = UTF8Encoding.INSTANCE;
+                    UTF8Encoding enc = UTF8Encoding.INSTANCE;
                     byte[] packedBytes = new byte[enc.maxLength() * occurrences];
                     int index = 0;
                     </diff>
      <filename>src/org/jruby/util/Pack.java</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>d688363ecb3a85e1a7fbb0639e060df3cbdfa94b</id>
    </parent>
  </parents>
  <author>
    <name>lopex</name>
    <email>lopex@961051c9-f516-0410-bf72-c9f7e237a7b7</email>
  </author>
  <url>http://github.com/bobmcwhirter/jruby/commit/0e813009e25bffe3cace709e9404163aad046c51</url>
  <id>0e813009e25bffe3cace709e9404163aad046c51</id>
  <committed-date>2008-09-08T13:28:13-07:00</committed-date>
  <authored-date>2008-09-08T13:28:13-07:00</authored-date>
  <message>Sync trunk with split joni/jcodings, also make String#split use Encoding.length(byte[]bytes, int p, int end) routine.

git-svn-id: http://svn.codehaus.org/jruby/trunk/jruby@7660 961051c9-f516-0410-bf72-c9f7e237a7b7</message>
  <tree>adac6eebe94d8b996998eb3141dfbf0d903b1fef</tree>
  <committer>
    <name>lopex</name>
    <email>lopex@961051c9-f516-0410-bf72-c9f7e237a7b7</email>
  </committer>
</commit>
