ruby-changes:7813
From: akr <ko1@a...>
Date: Sun, 14 Sep 2008 04:24:20 +0900 (JST)
Subject: [ruby-changes:7813] Ruby:r19334 (trunk): * include/ruby/oniguruma.h (OnigEncodingTypeST): add end argument for
akr 2008-09-14 04:23:52 +0900 (Sun, 14 Sep 2008) New Revision: 19334 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=19334 Log: * include/ruby/oniguruma.h (OnigEncodingTypeST): add end argument for left_adjust_char_head. (ONIGENC_LEFT_ADJUST_CHAR_HEAD): add end argument. (onigenc_get_left_adjust_char_head): ditto. * include/ruby/encoding.h (rb_enc_left_char_head): add end argument. * regenc.h (onigenc_single_byte_left_adjust_char_head): ditto. * regenc.c (onigenc_get_right_adjust_char_head): follow the interface change. (onigenc_get_right_adjust_char_head_with_prev): ditto. (onigenc_get_prev_char_head): ditto. (onigenc_step_back): ditto. (onigenc_get_left_adjust_char_head): ditto. (onigenc_single_byte_code_to_mbc): ditto. * re.c: ditto. * string.c: ditto. * io.c: ditto. * regexec.c: ditto. * enc/euc_jp.c: ditto. * enc/cp949.c: ditto. * enc/shift_jis.c: ditto. * enc/gbk.c: ditto. * enc/big5.c: ditto. * enc/euc_tw.c: ditto. * enc/euc_kr.c: ditto. * enc/emacs_mule.c: ditto. * enc/gb18030.c: ditto. * enc/utf_8.c: ditto. * enc/utf_16le.c: ditto. * enc/utf_16be.c: ditto. * enc/utf_32le.c: ditto. * enc/utf_32be.c: ditto. Modified files: trunk/ChangeLog trunk/enc/big5.c trunk/enc/cp949.c trunk/enc/emacs_mule.c trunk/enc/euc_jp.c trunk/enc/euc_kr.c trunk/enc/euc_tw.c trunk/enc/gb18030.c trunk/enc/gbk.c trunk/enc/shift_jis.c trunk/enc/utf_16be.c trunk/enc/utf_16le.c trunk/enc/utf_32be.c trunk/enc/utf_32le.c trunk/enc/utf_8.c trunk/include/ruby/encoding.h trunk/include/ruby/oniguruma.h trunk/io.c trunk/re.c trunk/regenc.c trunk/regenc.h trunk/regexec.c trunk/string.c Index: include/ruby/encoding.h =================================================================== --- include/ruby/encoding.h (revision 19333) +++ include/ruby/encoding.h (revision 19334) @@ -132,7 +132,7 @@ /* start, ptr, end, encoding -> prev_char */ #define rb_enc_prev_char(s,p,e,enc) (char *)onigenc_get_prev_char_head(enc,(UChar*)(s),(UChar*)(p),(UChar*)(e)) /* start, ptr, end, 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_left_char_head(s,p,e,enc) (char *)onigenc_get_left_adjust_char_head(enc,(UChar*)(s),(UChar*)(p),(UChar*)(e)) #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 */ Index: include/ruby/oniguruma.h =================================================================== --- include/ruby/oniguruma.h (revision 19333) +++ include/ruby/oniguruma.h (revision 19334) @@ -164,7 +164,7 @@ int (*property_name_to_ctype)(struct OnigEncodingTypeST* enc, OnigUChar* p, OnigUChar* end); int (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype, struct OnigEncodingTypeST* enc); int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], struct OnigEncodingTypeST* enc); - OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, struct OnigEncodingTypeST* enc); + OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc); int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc); int ruby_encoding_index; } OnigEncodingType; @@ -219,8 +219,8 @@ (enc)->mbc_case_fold(flag,(const OnigUChar** )pp,end,buf,enc) #define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) \ (enc)->is_allowed_reverse_match(s,end,enc) -#define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s) \ - (enc)->left_adjust_char_head(start, s, enc) +#define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s,end) \ + (enc)->left_adjust_char_head(start, s, end, enc) #define ONIGENC_APPLY_ALL_CASE_FOLD(enc,case_fold_flag,f,arg) \ (enc)->apply_all_case_fold(case_fold_flag,f,arg,enc) #define ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc,case_fold_flag,p,end,acs) \ @@ -307,7 +307,7 @@ ONIG_EXTERN OnigUChar* onigenc_get_prev_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end)); ONIG_EXTERN -OnigUChar* onigenc_get_left_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); +OnigUChar* onigenc_get_left_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end)); ONIG_EXTERN OnigUChar* onigenc_get_right_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end)); ONIG_EXTERN Index: regenc.c =================================================================== --- regenc.c (revision 19333) +++ regenc.c (revision 19334) @@ -64,7 +64,7 @@ extern UChar* 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); + UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s, end); if (p < s) { p += enclen(enc, p, end); } @@ -75,7 +75,7 @@ onigenc_get_right_adjust_char_head_with_prev(OnigEncoding enc, const UChar* start, const UChar* s, const UChar* end, const UChar** prev) { - UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s); + UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s, end); if (p < s) { if (prev) *prev = (const UChar* )p; @@ -93,7 +93,7 @@ if (s <= start) return (UChar* )NULL; - return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1); + return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1, end); } extern UChar* @@ -103,7 +103,7 @@ if (s <= start) return (UChar* )NULL; - s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1); + s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1, end); } return (UChar* )s; } @@ -369,9 +369,9 @@ } extern UChar* -onigenc_get_left_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s) +onigenc_get_left_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s, const UChar* end) { - return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s); + return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s, end); } const OnigPairCaseFoldCodes OnigAsciiLowerMap[] = { @@ -637,6 +637,7 @@ extern UChar* onigenc_single_byte_left_adjust_char_head(const UChar* start ARG_UNUSED, const UChar* s, + const UChar* end, OnigEncoding enc ARG_UNUSED) { return (UChar* )s; Index: re.c =================================================================== --- re.c (revision 19333) +++ re.c (revision 19334) @@ -1267,7 +1267,7 @@ 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); + p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, string, string + pos, string + RSTRING_LEN(str)); } return p - string; } Index: ChangeLog =================================================================== --- ChangeLog (revision 19333) +++ ChangeLog (revision 19334) @@ -1,3 +1,58 @@ +Sun Sep 14 04:15:16 2008 Tanaka Akira <akr@f...> + + * include/ruby/oniguruma.h (OnigEncodingTypeST): add end argument for + left_adjust_char_head. + (ONIGENC_LEFT_ADJUST_CHAR_HEAD): add end argument. + (onigenc_get_left_adjust_char_head): ditto. + + * include/ruby/encoding.h (rb_enc_left_char_head): add end argument. + + * regenc.h (onigenc_single_byte_left_adjust_char_head): ditto. + + * regenc.c (onigenc_get_right_adjust_char_head): follow the interface + change. + (onigenc_get_right_adjust_char_head_with_prev): ditto. + (onigenc_get_prev_char_head): ditto. + (onigenc_step_back): ditto. + (onigenc_get_left_adjust_char_head): ditto. + (onigenc_single_byte_code_to_mbc): ditto. + + * re.c: ditto. + + * string.c: ditto. + + * io.c: ditto. + + * regexec.c: ditto. + + * enc/euc_jp.c: ditto. + + * enc/cp949.c: ditto. + + * enc/shift_jis.c: ditto. + + * enc/gbk.c: ditto. + + * enc/big5.c: ditto. + + * enc/euc_tw.c: ditto. + + * enc/euc_kr.c: ditto. + + * enc/emacs_mule.c: ditto. + + * enc/gb18030.c: ditto. + + * enc/utf_8.c: ditto. + + * enc/utf_16le.c: ditto. + + * enc/utf_16be.c: ditto. + + * enc/utf_32le.c: ditto. + + * enc/utf_32be.c: ditto. + Sun Sep 14 03:43:27 2008 Tanaka Akira <akr@f...> * include/ruby/oniguruma.h (ONIGENC_STEP_BACK): add end argument. Index: regenc.h =================================================================== --- regenc.h (revision 19333) +++ regenc.h (revision 19334) @@ -125,7 +125,7 @@ ONIG_EXTERN OnigCodePoint onigenc_single_byte_mbc_to_code P_((const UChar* p, const UChar* end, OnigEncoding enc)); ONIG_EXTERN int onigenc_single_byte_code_to_mbclen P_((OnigCodePoint code, OnigEncoding enc)); ONIG_EXTERN int onigenc_single_byte_code_to_mbc P_((OnigCodePoint code, UChar *buf, OnigEncoding enc)); -ONIG_EXTERN UChar* onigenc_single_byte_left_adjust_char_head P_((const UChar* start, const UChar* s, OnigEncoding enc)); +ONIG_EXTERN UChar* onigenc_single_byte_left_adjust_char_head P_((const UChar* start, const UChar* s, const OnigUChar* end, OnigEncoding enc)); ONIG_EXTERN int onigenc_always_true_is_allowed_reverse_match P_((const UChar* s, const UChar* end, OnigEncoding enc)); ONIG_EXTERN int onigenc_always_false_is_allowed_reverse_match P_((const UChar* s, const UChar* end, OnigEncoding enc)); ONIG_EXTERN int onigenc_ascii_is_code_ctype P_((OnigCodePoint code, unsigned int ctype, OnigEncoding enc)); Index: enc/gbk.c =================================================================== --- enc/gbk.c (revision 19333) +++ enc/gbk.c (revision 19334) @@ -165,7 +165,7 @@ } static UChar* -gbk_left_adjust_char_head(const UChar* start, const UChar* s, OnigEncoding enc) +gbk_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) { const UChar *p; int len; @@ -181,7 +181,7 @@ } } } - len = enclen(enc, p, s); + len = enclen(enc, p, end); if (p + len > s) return (UChar* )p; p += len; return (UChar* )(p + ((s - p) & ~1)); Index: enc/euc_jp.c =================================================================== --- enc/euc_jp.c (revision 19333) +++ enc/euc_jp.c (revision 19334) @@ -222,7 +222,7 @@ } static UChar* -left_adjust_char_head(const UChar* start, const UChar* s, OnigEncoding enc) +left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) { /* In this encoding mb-trail bytes doesn't mix with single bytes. @@ -234,7 +234,7 @@ p = s; while (!eucjp_islead(*p) && p > start) p--; - len = enclen(enc, p, s); + len = enclen(enc, p, end); if (p + len > s) return (UChar* )p; p += len; return (UChar* )(p + ((s - p) & ~1)); Index: enc/cp949.c =================================================================== --- enc/cp949.c (revision 19333) +++ enc/cp949.c (revision 19334) @@ -165,7 +165,7 @@ } static UChar* -cp949_left_adjust_char_head(const UChar* start, const UChar* s, OnigEncoding enc) +cp949_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) { const UChar *p; int len; @@ -181,7 +181,7 @@ } } } - len = enclen(enc, p, s); + len = enclen(enc, p, end); if (p + len > s) return (UChar* )p; p += len; return (UChar* )(p + ((s - p) & ~1)); Index: enc/shift_jis.c =================================================================== --- enc/shift_jis.c (revision 19333) +++ enc/shift_jis.c (revision 19334) @@ -229,7 +229,7 @@ #endif static UChar* -left_adjust_char_head(const UChar* start, const UChar* s, OnigEncoding enc) +left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) { const UChar *p; int len; @@ -245,7 +245,7 @@ } } } - len = enclen(enc, p, s); + len = enclen(enc, p, end); if (p + len > s) return (UChar* )p; p += len; return (UChar* )(p + ((s - p) & ~1)); Index: enc/utf_8.c =================================================================== --- enc/utf_8.c (revision 19333) +++ enc/utf_8.c (revision 19334) @@ -405,7 +405,7 @@ static UChar* -left_adjust_char_head(const UChar* start, const UChar* s, OnigEncoding enc ARG_UNUSED) +left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc ARG_UNUSED) { const UChar *p; Index: enc/big5.c =================================================================== --- enc/big5.c (revision 19333) +++ enc/big5.c (revision 19334) @@ -165,7 +165,7 @@ #define BIG5_ISMB_TRAIL(byte) BIG5_CAN_BE_TRAIL_TABLE[(byte)] static UChar* -big5_left_adjust_char_head(const UChar* start, const UChar* s, OnigEncoding enc) +big5_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) { const UChar *p; int len; @@ -181,7 +181,7 @@ } } } - len = enclen(enc, p, s); + len = enclen(enc, p, end); if (p + len > s) return (UChar* )p; p += len; return (UChar* )(p + ((s - p) & ~1)); Index: enc/euc_tw.c =================================================================== --- enc/euc_tw.c (revision 19333) +++ enc/euc_tw.c (revision 19334) @@ -187,7 +187,7 @@ #define euctw_islead(c) ((UChar )((c) - 0xa1) > 0xfe - 0xa1) static UChar* -euctw_left_adjust_char_head(const UChar* start, const UChar* s, OnigEncoding enc) +euctw_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) { /* Assumed in this encoding, mb-trail bytes don't mix with single bytes. @@ -199,7 +199,7 @@ p = s; while (!euctw_islead(*p) && p > start) p--; - len = enclen(enc, p, s); + len = enclen(enc, p, end); if (p + len > s) return (UChar* )p; p += len; return (UChar* )(p + ((s - p) & ~1)); Index: enc/euc_kr.c =================================================================== --- enc/euc_kr.c (revision 19333) +++ enc/euc_kr.c (revision 19334) @@ -145,7 +145,7 @@ #define euckr_islead(c) ((c) < 0xa1 || (c) == 0xff) static UChar* -euckr_left_adjust_char_head(const UChar* start, const UChar* s, OnigEncoding enc) +euckr_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) { /* Assumed in this encoding, mb-trail bytes don't mix with single bytes. @@ -157,7 +157,7 @@ p = s; while (!euckr_islead(*p) && p > start) p--; - len = enclen(enc, p, s); + len = enclen(enc, p, end); if (p + len > s) return (UChar* )p; p += len; return (UChar* )(p + ((s - p) & ~1)); Index: enc/utf_32be.c =================================================================== --- enc/utf_32be.c (revision 19333) +++ enc/utf_32be.c (revision 19334) @@ -152,7 +152,7 @@ #endif static UChar* -utf32be_left_adjust_char_head(const UChar* start, const UChar* s, +utf32be_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc ARG_UNUSED) { int rem; Index: enc/emacs_mule.c =================================================================== --- enc/emacs_mule.c (revision 19333) +++ enc/emacs_mule.c (revision 19334) @@ -293,7 +293,7 @@ } static UChar* -left_adjust_char_head(const UChar* start, const UChar* s, OnigEncoding enc) +left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) { const UChar *p; Index: enc/utf_16be.c =================================================================== --- enc/utf_16be.c (revision 19333) +++ enc/utf_16be.c (revision 19334) @@ -212,7 +212,7 @@ #endif static UChar* -utf16be_left_adjust_char_head(const UChar* start, const UChar* s, +utf16be_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc ARG_UNUSED) { if (s <= start) return (UChar* )s; Index: enc/utf_32le.c =================================================================== --- enc/utf_32le.c (revision 19333) +++ enc/utf_32le.c (revision 19334) @@ -152,7 +152,7 @@ #endif static UChar* -utf32le_left_adjust_char_head(const UChar* start, const UChar* s, +utf32le_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc ARG_UNUSED) { int rem; Index: enc/gb18030.c =================================================================== --- enc/gb18030.c (revision 19333) +++ enc/gb18030.c (revision 19334) @@ -245,7 +245,7 @@ }; static UChar* -gb18030_left_adjust_char_head(const UChar* start, const UChar* s, OnigEncoding enc) +gb18030_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc) { const UChar *p; enum state state = S_START; Index: enc/utf_16le.c =================================================================== --- enc/utf_16le.c (revision 19333) +++ enc/utf_16le.c (revision 19334) @@ -204,7 +204,7 @@ #endif static UChar* -utf16le_left_adjust_char_head(const UChar* start, const UChar* s, +utf16le_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc ARG_UNUSED) { if (s <= start) return (UChar* )s; Index: string.c =================================================================== --- string.c (revision 19333) +++ string.c (revision 19334) @@ -5179,7 +5179,7 @@ p = memchr(p, '\n', pend - p); if (!p) break; - p0 = rb_enc_left_char_head(s, p, enc); + p0 = rb_enc_left_char_head(s, p, pend, enc); if (!rb_enc_is_newline(p0, pend, enc)) { p++; continue; @@ -5424,13 +5424,13 @@ rb_str_modify(str); enc = rb_enc_get(str); if (rb_enc_mbminlen(enc) > 1) { - pp = rb_enc_left_char_head(p, e-rb_enc_mbminlen(enc), enc); + pp = rb_enc_left_char_head(p, e-rb_enc_mbminlen(enc), e, enc); if (rb_enc_is_newline(pp, e, enc)) { e = pp; } pp = e - rb_enc_mbminlen(enc); if (pp >= p) { - pp = rb_enc_left_char_head(p, pp, enc); + pp = rb_enc_left_char_head(p, pp, e, enc); if (rb_enc_ascget(pp, e, 0, enc) == '\r') { e = pp; } @@ -5493,7 +5493,7 @@ if (p[len-1] == newline && (rslen <= 1 || memcmp(RSTRING_PTR(rs), pp, rslen) == 0)) { - if (rb_enc_left_char_head(p, pp, enc) != pp) + if (rb_enc_left_char_head(p, pp, e, enc) != pp) return Qnil; rb_str_modify(str); STR_SET_LEN(str, RSTRING_LEN(str) - rslen); @@ -6284,7 +6284,7 @@ rb_str_end_with(int argc, VALUE *argv, VALUE str) { int i; - char *p, *s; + char *p, *s, *e; rb_encoding *enc; for (i=0; i<argc; i++) { @@ -6293,8 +6293,9 @@ enc = rb_enc_check(str, tmp); if (RSTRING_LEN(str) < RSTRING_LEN(tmp)) continue; p = RSTRING_PTR(str); - s = p + RSTRING_LEN(str) - RSTRING_LEN(tmp); - if (rb_enc_left_char_head(p, s, enc) != s) + e = p + RSTRING_LEN(str); + s = e - RSTRING_LEN(tmp); + if (rb_enc_left_char_head(p, s, e, enc) != s) continue; if (memcmp(s, RSTRING_PTR(tmp), RSTRING_LEN(tmp)) == 0) return Qtrue; Index: io.c =================================================================== --- io.c (revision 19333) +++ io.c (revision 19334) @@ -2177,13 +2177,14 @@ else enc = io_input_encoding(fptr); while ((c = appendline(fptr, newline, &str, &limit)) != EOF) { - const char *s, *p, *pp; + const char *s, *p, *pp, *e; if (c == newline) { if (RSTRING_LEN(str) < rslen) continue; s = RSTRING_PTR(str); - p = s + RSTRING_LEN(str) - rslen; - pp = rb_enc_left_char_head(s, p, enc); + e = s + RSTRING_LEN(str); + p = e - rslen; + pp = rb_enc_left_char_head(s, p, e, enc); if (pp != p) continue; if (!rspara) rscheck(rsptr, rslen, rs); if (memcmp(p, rsptr, rslen) == 0) break; @@ -2191,7 +2192,7 @@ if (limit == 0) { s = RSTRING_PTR(str); p = s + RSTRING_LEN(str); - pp = rb_enc_left_char_head(s, p-1, enc); + pp = rb_enc_left_char_head(s, p-1, p, enc); if (extra_limit && MBCLEN_NEEDMORE_P(rb_enc_precise_mbclen(pp, p, enc))) { /* relax the limit while incomplete character. Index: regexec.c =================================================================== --- regexec.c (revision 19333) +++ regexec.c (revision 19334) @@ -2843,7 +2843,7 @@ if (s > text_start) s = (UChar* )text_start; else - s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s); + s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s, text_end); while (s >= text) { if (*s == *target) { @@ -2876,7 +2876,7 @@ if (s > text_start) s = (UChar* )text_start; else - s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s); + s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s, text_end); while (s >= text) { if (str_lower_case_match(enc, case_fold_flag, @@ -3018,7 +3018,7 @@ if (text_start < s) s = text_start; else - s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s); + s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s, text_end); while (s >= text) { p = s; @@ -3030,7 +3030,7 @@ return (UChar* )s; s -= reg->int_map_backward[*s]; - s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s); + s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s, text_end); } return (UChar* )NULL; @@ -3523,7 +3523,7 @@ } if ((OnigDistance )(max_semi_end - start) < reg->anchor_dmin) { start = max_semi_end - reg->anchor_dmin; - start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, start); + start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, start, end); } if (range > start) goto mismatch_no_msa; } @@ -3670,7 +3670,7 @@ UChar *low, *high, *adjrange, *sch_start; if (range < end) - adjrange = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, range); + adjrange = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, range, end); else adjrange = (UChar* )end; @@ -3706,7 +3706,7 @@ if (sch_start > end) sch_start = (UChar* )end; else sch_start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, - start, sch_start); + start, sch_start, end); } } if (backward_search_range(reg, str, end, sch_start, range, adjrange, -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/