[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]