From c7e9e1f8f9a61792586276bbbd28104c4e838126 Mon Sep 17 00:00:00 2001 From: matz Date: Fri, 17 Aug 2001 05:06:31 +0000 Subject: [PATCH] * parse.y (parse_regx): handle backslash escaping of delimiter here. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@1702 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ parse.y | 10 ++++++---- re.c | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index d0909bced9..e4fcdfc4ac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,10 @@ Wed Aug 17 13:55:33 2001 Usaku Nakamura * win32/Makefile.sub: merge from 1.7: use del instead of rm. +Fri Aug 17 00:49:51 2001 Yukihiro Matsumoto + + * parse.y (parse_regx): handle backslash escaping of delimiter here. + Thu Aug 16 19:53:19 2001 Akinori MUSHA * lib/resolv.rb, lib/resolv-replace.rb: Copy from 1.7. diff --git a/parse.y b/parse.y index c6b3736d40..df796cdf17 100644 --- a/parse.y +++ b/parse.y @@ -2241,7 +2241,8 @@ read_escape() } static int -tokadd_escape() +tokadd_escape(term) + int term; { int c; @@ -2302,7 +2303,7 @@ tokadd_escape() tokadd('\\'); tokadd('c'); escaped: if ((c = nextc()) == '\\') { - return tokadd_escape(); + return tokadd_escape(term); } else if (c == -1) goto eof; tokadd(c); @@ -2314,7 +2315,8 @@ tokadd_escape() return -1; default: - tokadd('\\'); + if (c != term) + tokadd('\\'); tokadd(c); } return 0; @@ -2345,7 +2347,7 @@ parse_regx(term, paren) continue; case '\\': - if (tokadd_escape() < 0) + if (tokadd_escape(term) < 0) return 0; continue; diff --git a/re.c b/re.c index 0cf81ef607..172ce55124 100644 --- a/re.c +++ b/re.c @@ -214,7 +214,7 @@ rb_reg_expr_str(str, s, len) const char *p, *pend; int need_escape = 0; - p = s; pend = p + len; + p = s; pend = p + len; while (p