ruby-changes:7809
From: akr <ko1@a...>
Date: Sun, 14 Sep 2008 01:40:59 +0900 (JST)
Subject: [ruby-changes:7809] Ruby:r19330 (trunk): * include/ruby/oniguruma.h (onigenc_get_right_adjust_char_head): add
akr 2008-09-14 01:40:31 +0900 (Sun, 14 Sep 2008) New Revision: 19330 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=19330 Log: * include/ruby/oniguruma.h (onigenc_get_right_adjust_char_head): add end argument. * include/ruby/encoding.h (rb_enc_right_char_head): add end argument. * regenc.c (onigenc_get_right_adjust_char_head): use end argument. * re.c (rb_reg_adjust_startpos): follow the interface change. * string.c (rb_str_index): ditto. * regexec.c (backward_search_range): ditto. (onig_search): ditto. Modified files: trunk/ChangeLog trunk/include/ruby/encoding.h trunk/include/ruby/oniguruma.h trunk/re.c trunk/regenc.c trunk/regexec.c trunk/string.c Index: include/ruby/encoding.h =================================================================== --- include/ruby/encoding.h (revision 19329) +++ include/ruby/encoding.h (revision 19330) @@ -133,7 +133,7 @@ #define rb_enc_prev_char(s,p,enc) (char *)onigenc_get_prev_char_head(enc,(UChar*)(s),(UChar*)(p)) /* ptr, ptr, encoding -> next_char */ #define rb_enc_left_char_head(s,p,enc) (char *)onigenc_get_left_adjust_char_head(enc,(UChar*)(s),(UChar*)(p)) -#define rb_enc_right_char_head(s,p,enc) (char *)onigenc_get_right_adjust_char_head(enc,(UChar*)(s),(UChar*)(p)) +#define rb_enc_right_char_head(s,p,e,enc) (char *)onigenc_get_right_adjust_char_head(enc,(UChar*)(s),(UChar*)(p),(UChar*)(e)) /* ptr, ptr, encoding -> newline_or_not */ #define rb_enc_is_newline(p,end,enc) ONIGENC_IS_MBC_NEWLINE(enc,(UChar*)(p),(UChar*)(end)) Index: include/ruby/oniguruma.h =================================================================== --- include/ruby/oniguruma.h (revision 19329) +++ include/ruby/oniguruma.h (revision 19330) @@ -309,7 +309,7 @@ ONIG_EXTERN OnigUChar* onigenc_get_left_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); ONIG_EXTERN -OnigUChar* onigenc_get_right_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); +OnigUChar* onigenc_get_right_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end)); ONIG_EXTERN int onigenc_strlen P_((OnigEncoding enc, const OnigUChar* p, const OnigUChar* end)); ONIG_EXTERN Index: regenc.c =================================================================== --- regenc.c (revision 19329) +++ regenc.c (revision 19330) @@ -62,11 +62,11 @@ } extern UChar* -onigenc_get_right_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s) +onigenc_get_right_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s, const UChar* end) { UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s); if (p < s) { - p += enclen(enc, p, s); + p += enclen(enc, p, end); } return p; } Index: re.c =================================================================== --- re.c (revision 19329) +++ re.c (revision 19330) @@ -1264,7 +1264,7 @@ string = (UChar*)RSTRING_PTR(str); if (range > 0) { - p = onigenc_get_right_adjust_char_head(enc, string, string + pos); + p = onigenc_get_right_adjust_char_head(enc, string, string + pos, string + RSTRING_LEN(str)); } else { p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, string, string + pos); Index: ChangeLog =================================================================== --- ChangeLog (revision 19329) +++ ChangeLog (revision 19330) @@ -1,3 +1,19 @@ +Sun Sep 14 01:38:26 2008 Tanaka Akira <akr@f...> + + * include/ruby/oniguruma.h (onigenc_get_right_adjust_char_head): add + end argument. + + * include/ruby/encoding.h (rb_enc_right_char_head): add end argument. + + * regenc.c (onigenc_get_right_adjust_char_head): use end argument. + + * re.c (rb_reg_adjust_startpos): follow the interface change. + + * string.c (rb_str_index): ditto. + + * regexec.c (backward_search_range): ditto. + (onig_search): ditto. + Sun Sep 14 00:43:28 2008 Tanaka Akira <akr@f...> * ext/ripper/depend (ripper.o): it depends on ruby headers. Index: string.c =================================================================== --- string.c (revision 19329) +++ string.c (revision 19330) @@ -2088,7 +2088,7 @@ rb_str_index(VALUE str, VALUE sub, long offset) { long pos; - char *s, *sptr; + char *s, *sptr, *e; long len, slen; rb_encoding *enc; @@ -2104,6 +2104,7 @@ } if (len - offset < slen) return -1; s = RSTRING_PTR(str); + e = s + RSTRING_LEN(str); if (offset) { offset = str_offset(s, RSTRING_END(str), offset, enc, single_byte_optimizable(str)); s += offset; @@ -2117,7 +2118,7 @@ char *t; pos = rb_memsearch(sptr, slen, s, len, enc); if (pos < 0) return pos; - t = rb_enc_right_char_head(s, s+pos, enc); + t = rb_enc_right_char_head(s, s+pos, e, enc); if (t == s + pos) break; if ((len -= t - s) <= 0) return -1; offset += t - s; Index: regexec.c =================================================================== --- regexec.c (revision 19329) +++ regexec.c (revision 19330) @@ -3348,7 +3348,7 @@ if (reg->dmax != ONIG_INFINITE_DISTANCE) { *low = p - reg->dmax; *high = p - reg->dmin; - *high = onigenc_get_right_adjust_char_head(reg->enc, adjrange, *high); + *high = onigenc_get_right_adjust_char_head(reg->enc, adjrange, *high, end); } #ifdef ONIG_DEBUG_SEARCH @@ -3506,7 +3506,7 @@ if ((OnigDistance )(min_semi_end - start) > reg->anchor_dmax) { start = min_semi_end - reg->anchor_dmax; if (start < end) - start = onigenc_get_right_adjust_char_head(reg->enc, str, start); + start = onigenc_get_right_adjust_char_head(reg->enc, str, start, end); else { /* match with empty at end */ start = onigenc_get_prev_char_head(reg->enc, str, end); } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/