diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-11-13 05:50:54 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-11-13 05:50:54 +0000 |
commit | 24d38cc447ee122c07208cf87a7899fe77792b02 (patch) | |
tree | b61a601c5cc4639edd1195e670afe7a4e3c897db | |
parent | 0c467565ca9b9e9f3f99010044aa839eb1631454 (diff) |
regexec.c: invalidate previously matched position
* regexec.c (match_at): invalidate end position not yet matched
when new start position is pushed, to dispose previously stored
position. [ruby-core:83743] [Bug #14101]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60755 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | regexec.c | 1 | ||||
-rw-r--r-- | test/ruby/test_regexp.rb | 3 |
2 files changed, 4 insertions, 0 deletions
@@ -2506,6 +2506,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, CASE(OP_MEMORY_START) MOP_IN(OP_MEMORY_START); GET_MEMNUM_INC(mem, p); mem_start_stk[mem] = (OnigStackIndex )((void* )s); + mem_end_stk[mem] = INVALID_STACK_INDEX; MOP_OUT; JUMP; diff --git a/test/ruby/test_regexp.rb b/test/ruby/test_regexp.rb index d17a125444..85d5b2cdfe 100644 --- a/test/ruby/test_regexp.rb +++ b/test/ruby/test_regexp.rb @@ -1238,6 +1238,9 @@ class TestRegexp < Test::Unit::TestCase assert_equal(0, /\/\*((?~\*\/))\*\// =~ "/*abc*def/xyz*/ /* */") assert_equal("abc*def/xyz", $1) + + assert_equal(0, /(?~(a)c)/ =~ "abb") + assert_nil($1) end # This assertion is for porting x2() tests in testpy.py of Onigmo. |