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

ruby-changes:2939

From: ko1@a...
Date: 21 Dec 2007 20:09:30 +0900
Subject: [ruby-changes:2939] nobu - Ruby:r14430 (trunk): * string.c (rb_str_succ): retry increasing until valid char is found.

nobu	2007-12-21 20:09:19 +0900 (Fri, 21 Dec 2007)

  New Revision: 14430

  Modified files:
    trunk/ChangeLog
    trunk/string.c

  Log:
    * string.c (rb_str_succ): retry increasing until valid char is found.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/string.c?r1=14430&r2=14429
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14430&r2=14429

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14429)
+++ ChangeLog	(revision 14430)
@@ -1,3 +1,7 @@
+Fri Dec 21 20:09:18 2007  Nobuyoshi Nakada  <nobu@r...>
+
+	* string.c (rb_str_succ): retry increasing until valid char is found.
+
 Fri Dec 21 20:00:02 2007  Nobuyoshi Nakada  <nobu@r...>
 
 	* encoding.c (rb_enc_replicate): now creates first class encoding.
Index: string.c
===================================================================
--- string.c	(revision 14429)
+++ string.c	(revision 14430)
@@ -1872,9 +1872,9 @@
 	c = '\001';
 	s = e;
 	while ((s = rb_enc_prev_char(sbeg, s, enc)) != 0) {
+	    int limit = 256;
 	    if (cc == 0) cc = rb_enc_codepoint(s, e, enc);
-	    cc += 1;
-	    l = rb_enc_mbcput(cc, carry, enc);
+	    while ((l = rb_enc_mbcput(++cc, carry, enc)) < 0 && --limit);
 	    if (l > 0) {
 		if (l == (o = e - s)) goto overlay;
 		n = s - sbeg;
@@ -4538,7 +4538,7 @@
     if (p[len-1] == newline &&
 	(rslen <= 1 ||
 	 memcmp(RSTRING_PTR(rs), pp, rslen) == 0)) {
-	if (ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,p,pp) != (const UChar*)pp)
+	if (ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, (UChar *)p, (UChar *)pp) != (const UChar*)pp)
 	    return Qnil;
 	rb_str_modify(str);
 	STR_SET_LEN(str, RSTRING_LEN(str) - rslen);

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

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