From 3103d063e247768be9e87b5a67f5a7b6849a552c Mon Sep 17 00:00:00 2001 From: mattn Date: Mon, 11 Aug 2014 14:28:05 +0900 Subject: Fix String#succ. "-a-".succ should be "-b-" --- mrbgems/mruby-string-ext/src/string.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'mrbgems/mruby-string-ext/src/string.c') diff --git a/mrbgems/mruby-string-ext/src/string.c b/mrbgems/mruby-string-ext/src/string.c index 42ada9ebd..2732f8599 100644 --- a/mrbgems/mruby-string-ext/src/string.c +++ b/mrbgems/mruby-string-ext/src/string.c @@ -271,14 +271,27 @@ mrb_str_succ_bang(mrb_state *mrb, mrb_value self) break; b++; } - result = mrb_str_new(mrb, (char*) p, b - p); + + if (b > e) { + b = p; + result = mrb_str_new_lit(mrb, ""); + } else + result = mrb_str_new(mrb, (char*) p, b - p); + + while (e >= b) { + if (ISALNUM(*e)) + break; + e--; + } + if (e < b) + e = p + l - 1; while (e >= b) { if (!ISALNUM(*e)) { if (*e == 0xff) { mrb_str_cat_cstr(mrb, result, "\x01"); (*e) = 0; - } else + } else (*e)++; break; } -- cgit v1.2.3