summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--parse.y2
-rw-r--r--test/ruby/test_regexp.rb7
3 files changed, 13 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 18c58993e3..9f47be87dc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sun Aug 8 12:41:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_escape): no similar messages twice.
+ [ruby-core:31048]
+
Sun Aug 8 10:07:45 2010 Tanaka Akira <akr@fsij.org>
* strftime.c (rb_strftime_with_timespec): suppress warnings.
diff --git a/parse.y b/parse.y
index d6322824cd..7ac471cf3c 100644
--- a/parse.y
+++ b/parse.y
@@ -5653,7 +5653,7 @@ parser_tokadd_escape(struct parser_params *parser, rb_encoding **encp)
case 'x': /* hex constant */
{
tok_hex(&numlen);
- if (numlen == 0) goto eof;
+ if (numlen == 0) return -1;
tokcopy((int)numlen + 2);
}
return 0;
diff --git a/test/ruby/test_regexp.rb b/test/ruby/test_regexp.rb
index 35162310db..874b1873e7 100644
--- a/test/ruby/test_regexp.rb
+++ b/test/ruby/test_regexp.rb
@@ -834,4 +834,11 @@ class TestRegexp < Test::Unit::TestCase
def test_property_warn
assert_in_out_err('-w', 'x=/\p%s/', [], %r"warning: invalid Unicode Property \\p: /\\p%s/")
end
+
+ def test_invalid_escape_error
+ bug3539 = '[ruby-core:31048]'
+ error = assert_raise(SyntaxError) {eval('/\x/', nil, bug3539)}
+ assert_match(/invalid hex escape/, error.message)
+ assert_equal(1, error.message.scan(/.*invalid .*escape.*/i).size, bug3539)
+ end
end