Boost logo

Boost :

From: John Maddock (john_at_[hidden])
Date: 2004-05-14 05:24:32


> When searching for regex "(a)(?:b)" with the nosubs flag set, perl_matcher
cores with failed assertion "m.subs() > 2" in >perl_matcher.hpp,
match_results::set_second().

Confirmed: the patch that's going into cvs is at the end, if you don't want
to apply that then, pass match_nosubs to the matching algorithm in place of
compiling with nosubs.

John.

jm_at_fuji /cygdrive/c/data/boost/release/boost/boost/regex/v4
$ cvs diff -u
johnmaddock_at_[hidden]'s password:
cvs diff: Diffing .
Index: regex_compile.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/regex/v4/regex_compile.hpp,v
retrieving revision 1.11.2.3
diff -u -r1.11.2.3 regex_compile.hpp
--- regex_compile.hpp 12 May 2004 11:38:51 -0000 1.11.2.3
+++ regex_compile.hpp 14 May 2004 10:21:42 -0000
@@ -1435,7 +1435,8 @@
             {
             case traits_type::syntax_colon:
                static_cast<re_detail::re_brace*>(dat)->index = 0;
- --marks;
+ if((_flags & nosubs) == 0)
+ --marks;
                markid.pop();
                markid.push(0);
                ++ptr;
@@ -1445,7 +1446,8 @@
                markid.pop();
                markid.push(-1);
                common_forward_assert:
- --marks;
+ if((_flags & nosubs) == 0)
+ --marks;
                ++ptr;
                // extend:
                dat = add_simple(dat, re_detail::syntax_element_jump,
re_detail:
:re_jump_size);
@@ -1470,7 +1472,8 @@
             case traits_type::syntax_hash:
                // comment just skip it:
                static_cast<re_detail::re_brace*>(dat)->index = 0;
- --marks;
+ if((_flags & nosubs) == 0)
+ --marks;
                markid.pop();
                mark.pop();
                do{


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk