diff --git a/ChangeLog b/ChangeLog index 72641f0c91..a0643ca63d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Sat Apr 24 14:32:03 2004 Kazuo Saito + + * re.c: applied stack error handling patch. [ruby-dev:22431] + Sat Apr 24 10:38:31 2004 Dave Thomas * lib/rdoc/markup/simple_markup.rb (SM::SimpleMarkup::group_lines): diff --git a/re.c b/re.c index 6a60a099fc..23196bb171 100644 --- a/re.c +++ b/re.c @@ -920,14 +920,16 @@ rb_reg_search(re, str, pos, reverse) if (FL_TEST(re, KCODE_FIXED)) kcode_reset_option(); - if (result == -2) { - rb_reg_raise(RREGEXP(re)->str, RREGEXP(re)->len, - "Stack overflow in regexp matcher", re); - } - if (result < 0) { - rb_backref_set(Qnil); - return result; + if (result == ONIG_MISMATCH) { + rb_backref_set(Qnil); + return result; + } + else { + char err[ONIG_MAX_ERROR_MESSAGE_LEN]; + re_error_code_to_str((UChar* )err, result); + rb_reg_raise(RREGEXP(re)->str, RREGEXP(re)->len, err, 0); + } } match = rb_backref_get();