Revision
3619
Author
vincent.isambart@gmail.com
Date
2010-02-25 02:34:01 -0800 (Thu, 25 Feb 2010)

Log Message

fixed a bug in str_index_for_string

Modified Paths

Diff

Modified: MacRuby/branches/icu/string.c (3618 => 3619)


--- MacRuby/branches/icu/string.c	2010-02-25 09:06:00 UTC (rev 3618)
+++ MacRuby/branches/icu/string.c	2010-02-25 10:34:01 UTC (rev 3619)
@@ -877,6 +877,7 @@
 	}
 	else {
 	    long length = BYTES_TO_UCHARS(self->length_in_bytes);
+	    long offset_in_uchars = BYTES_TO_UCHARS(offset_in_bytes);
 	    long index = 0, i = 0;
 	    for (;;) {
 		if (U16_IS_LEAD(self->data.uchars[i]) && (i+1 < length)
@@ -886,11 +887,11 @@
 		else {
 		    ++i;
 		}
-		if (offset_in_bytes < i) {
+		if (offset_in_uchars < i) {
 		    return index;
 		}
 		++index;
-		if (offset_in_bytes == i) {
+		if (offset_in_uchars == i) {
 		    return index;
 		}
 	    }
@@ -1576,7 +1577,7 @@
 	    // fall through
 	case T_STRING:
 	    pos = str_index_for_string(RSTR(self), str_need_string(sub),
-		    pos, false);
+		    pos, true);
 	    break;
     }