ruby-changes:14023
From: nobu <ko1@a...>
Date: Wed, 18 Nov 2009 10:17:45 +0900 (JST)
Subject: [ruby-changes:14023] Ruby:r25833 (trunk): * string.c (str_utf8_nth): no count_utf8_lead_bytes_with_word
nobu 2009-11-18 10:17:11 +0900 (Wed, 18 Nov 2009) New Revision: 25833 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25833 Log: * string.c (str_utf8_nth): no count_utf8_lead_bytes_with_word optimization for short string. [ruby-core:26787] * string.c (str_utf8_offset): str_utf8_nth never return NULL. Modified files: trunk/ChangeLog trunk/string.c Index: ChangeLog =================================================================== --- ChangeLog (revision 25832) +++ ChangeLog (revision 25833) @@ -1,3 +1,10 @@ +Wed Nov 18 10:17:09 2009 Nobuyoshi Nakada <nobu@r...> + + * string.c (str_utf8_nth): no count_utf8_lead_bytes_with_word + optimization for short string. [ruby-core:26787] + + * string.c (str_utf8_offset): str_utf8_nth never return NULL. + Wed Nov 18 10:12:34 2009 Shugo Maeda <shugo@r...> * vm_method.c (rb_undef): should raise TypeError if klass is nil. Index: string.c =================================================================== --- string.c (revision 25832) +++ string.c (revision 25833) @@ -1468,7 +1468,7 @@ static char * str_utf8_nth(const char *p, const char *e, long nth) { - if ((int)SIZEOF_VALUE * 2 < nth) { + if ((int)SIZEOF_VALUE < e - p && (int)SIZEOF_VALUE * 2 < nth) { const VALUE *s, *t; const VALUE lowbits = sizeof(VALUE) - 1; s = (const VALUE*)(~lowbits & ((VALUE)p + lowbits)); @@ -1483,7 +1483,6 @@ } while (s < t && (int)sizeof(VALUE) <= nth); p = (char *)s; } - if (p > e) return 0; while (p < e) { if (is_utf8_lead_byte(*p)) { if (nth == 0) break; @@ -1498,7 +1497,6 @@ str_utf8_offset(const char *p, const char *e, long nth) { const char *pp = str_utf8_nth(p, e, nth); - if (!pp) return e - p; return pp - p; } #endif -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/