Merge regex bug fix.

Refs #8569.

[SVN r84463]
This commit is contained in:
John Maddock
2013-05-24 17:09:40 +00:00
parent f6870ad64a
commit b738a55e0d
96 changed files with 450 additions and 398 deletions

View File

@ -738,14 +738,14 @@ void basic_regex_creator<charT, traits>::fixup_pointers(re_syntax_base* state)
case syntax_element_long_set_rep:
// set the state_id of this repeat:
static_cast<re_repeat*>(state)->state_id = m_repeater_id++;
// fall through:
BOOST_FALLTHROUGH;
case syntax_element_alt:
std::memset(static_cast<re_alt*>(state)->_map, 0, sizeof(static_cast<re_alt*>(state)->_map));
static_cast<re_alt*>(state)->can_be_null = 0;
// fall through:
BOOST_FALLTHROUGH;
case syntax_element_jump:
static_cast<re_jump*>(state)->alt.p = getaddress(static_cast<re_jump*>(state)->alt.i, state);
// fall through again:
BOOST_FALLTHROUGH;
default:
if(state->next.i)
state->next.p = getaddress(state->next.i, state);
@ -877,6 +877,7 @@ void basic_regex_creator<charT, traits>::fixup_recursions(re_syntax_base* state)
}
}
}
break;
default:
break;
}
@ -941,7 +942,7 @@ void basic_regex_creator<charT, traits>::create_startmaps(re_syntax_base* state)
e.raise();
}
}
// fall through:
BOOST_FALLTHROUGH;
default:
state = state->next.p;
}
@ -1153,13 +1154,14 @@ void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state,
break;
}
m_recursion_checks[recursion_sub] = true;
// fall through, can't handle nested recursion here...
// can't handle nested recursion here...
BOOST_FALLTHROUGH;
}
case syntax_element_backref:
// can be null, and any character can match:
if(pnull)
*pnull |= mask;
// fall through:
BOOST_FALLTHROUGH;
case syntax_element_wild:
{
// can't be null, any character can match:
@ -1359,7 +1361,7 @@ void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state,
state = state->next.p->next.p;
break;
}
// otherwise fall through:
BOOST_FALLTHROUGH;
default:
state = state->next.p;
}
@ -1456,6 +1458,7 @@ void basic_regex_creator<charT, traits>::set_bad_repeat(re_syntax_base* pt)
if(state_id <= sizeof(m_bad_repeats) * CHAR_BIT)
m_bad_repeats |= (one << state_id);
}
break;
default:
break;
}
@ -1537,7 +1540,7 @@ void basic_regex_creator<charT, traits>::probe_leading_repeat(re_syntax_base* st
case syntax_element_long_set_rep:
if(this->m_has_backrefs == 0)
static_cast<re_repeat*>(state)->leading = true;
// fall through:
BOOST_FALLTHROUGH;
default:
return;
}