ruby-changes:3782
From: ko1@a...
Date: Sun, 27 Jan 2008 19:09:13 +0900 (JST)
Subject: [ruby-changes:3782] akr - Ruby:r15271 (trunk): * string.c (rb_str_succ): warning suppressed.
akr 2008-01-27 19:08:58 +0900 (Sun, 27 Jan 2008) New Revision: 15271 Modified files: trunk/ChangeLog trunk/string.c Log: * string.c (rb_str_succ): warning suppressed. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/string.c?r1=15271&r2=15270&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15271&r2=15270&diff_format=u Index: ChangeLog =================================================================== --- ChangeLog (revision 15270) +++ ChangeLog (revision 15271) @@ -1,3 +1,7 @@ +Sun Jan 27 19:07:33 2008 Tanaka Akira <akr@f...> + + * string.c (rb_str_succ): warning suppressed. + Sun Jan 27 18:18:13 2008 NARUSE, Yui <naruse@r...> * common.mk (help): show major targets. @@ -16,7 +20,7 @@ Sun Jan 27 16:27:22 2008 NARUSE, Yui <naruse@r...> - * ext/nkf/nkt-utf8: update nkf. + * ext/nkf/nkf-utf8: update nkf. Sun Jan 27 16:25:27 2008 NARUSE, Yui <naruse@r...> Index: string.c =================================================================== --- string.c (revision 15270) +++ string.c (revision 15271) @@ -2011,21 +2011,18 @@ { int i, l; while (1) { - for (i = len-1; 0 <= i; i--) { - int c; - c = ++((unsigned char*)p)[i]; - if (c != 0) - break; - } + for (i = len-1; 0 <= i && (unsigned char)p[i] == 0xff; i--) + p[i] = '\0'; if (i < 0) return NEIGHBOR_WRAPPED; + ++((unsigned char*)p)[i]; l = rb_enc_precise_mbclen(p, p+len, enc); if (MBCLEN_CHARFOUND(l)) { if (l == len) { return NEIGHBOR_FOUND; } else { - memset(p+l, '\xff', len-l); + memset(p+l, 0xff, len-l); } } if (MBCLEN_INVALID(l) && i < len-1) { @@ -2035,7 +2032,7 @@ if (!MBCLEN_INVALID(l2)) break; } - memset(p+len2+1, '\xff', len-(len2+1)); + memset(p+len2+1, 0xff, len-(len2+1)); } } } @@ -2045,21 +2042,18 @@ { int i, l; while (1) { - for (i = len-1; 0 <= i; i--) { - int c; - c = --((unsigned char*)p)[i]; - if (c != 0xff) - break; - } + for (i = len-1; 0 <= i && (unsigned char)p[i] == 0; i--) + p[i] = '\xff'; if (i < 0) return NEIGHBOR_WRAPPED; + --((unsigned char*)p)[i]; l = rb_enc_precise_mbclen(p, p+len, enc); if (MBCLEN_CHARFOUND(l)) { if (l == len) { return NEIGHBOR_FOUND; } else { - memset(p+l, '\0', len-l); + memset(p+l, 0, len-l); } } if (MBCLEN_INVALID(l) && i < len-1) { @@ -2069,7 +2063,7 @@ if (!MBCLEN_INVALID(l2)) break; } - memset(p+len2+1, '\0', len-(len2+1)); + memset(p+len2+1, 0, len-(len2+1)); } } } @@ -2173,8 +2167,8 @@ char *sbeg, *s, *e; int c = -1; long l; - char carry[ONIGENC_CODE_TO_MBC_MAXLEN]; - int carry_pos, carry_len; + char carry[ONIGENC_CODE_TO_MBC_MAXLEN] = "\1"; + int carry_pos = 0, carry_len = 1; str = rb_str_new5(orig, RSTRING_PTR(orig), RSTRING_LEN(orig)); rb_enc_copy(str, orig); @@ -2198,8 +2192,6 @@ carry_len = l; } if (c == -1) { /* str contains no alnum */ - carry[0] = '\001'; - carry_len = 1; s = e; while ((s = rb_enc_prev_char(sbeg, s, enc)) != 0) { enum neighbor_char neighbor; @@ -2211,23 +2203,15 @@ /* wrapped to \0...\0. search next valid char. */ enc_succ_char(s, l, enc); } - c = 1; carry_pos = s - sbeg; } - if (c == -1) { - c = 1; - carry_pos = 0; - } } - if (!s && c == 1) { - RESIZE_CAPA(str, RSTRING_LEN(str) + carry_len); - s = RSTRING_PTR(str) + carry_pos; - memmove(s + carry_len, s, RSTRING_LEN(str) - carry_pos); - memmove(s, carry, carry_len); - STR_SET_LEN(str, RSTRING_LEN(str) + carry_len); - RSTRING_PTR(str)[RSTRING_LEN(str)] = '\0'; - } - + RESIZE_CAPA(str, RSTRING_LEN(str) + carry_len); + s = RSTRING_PTR(str) + carry_pos; + memmove(s + carry_len, s, RSTRING_LEN(str) - carry_pos); + memmove(s, carry, carry_len); + STR_SET_LEN(str, RSTRING_LEN(str) + carry_len); + RSTRING_PTR(str)[RSTRING_LEN(str)] = '\0'; return str; } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/