Don't use __glibcxx_assert to check class invariants
Assertions should be used to check preconditions that users must meet, not to check whether the implementation is correct. * include/bits/regex_automaton.tcc (_StateSeq<_TraitsT>::_M_clone()): Remove __glibcxx_assert statements and use map::find instead of map::operator[]. From-SVN: r264422
This commit is contained in:
parent
3c5af60836
commit
dc9acaa99b
|
@ -1,3 +1,9 @@
|
||||||
|
2018-09-19 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
|
* include/bits/regex_automaton.tcc (_StateSeq<_TraitsT>::_M_clone()):
|
||||||
|
Remove __glibcxx_assert statements and use map::find instead of
|
||||||
|
map::operator[].
|
||||||
|
|
||||||
2018-09-18 François Dumont <fdumont@gcc.gnu.org>
|
2018-09-18 François Dumont <fdumont@gcc.gnu.org>
|
||||||
|
|
||||||
PR libstdc++/87135
|
PR libstdc++/87135
|
||||||
|
|
|
@ -220,16 +220,9 @@ namespace __detail
|
||||||
auto __v = __it.second;
|
auto __v = __it.second;
|
||||||
auto& __ref = _M_nfa[__v];
|
auto& __ref = _M_nfa[__v];
|
||||||
if (__ref._M_next != _S_invalid_state_id)
|
if (__ref._M_next != _S_invalid_state_id)
|
||||||
{
|
__ref._M_next = __m.find(__ref._M_next)->second;
|
||||||
__glibcxx_assert(__m.count(__ref._M_next) > 0);
|
if (__ref._M_has_alt() && __ref._M_alt != _S_invalid_state_id)
|
||||||
__ref._M_next = __m[__ref._M_next];
|
__ref._M_alt = __m.find(__ref._M_alt)->second;
|
||||||
}
|
|
||||||
if (__ref._M_has_alt())
|
|
||||||
if (__ref._M_alt != _S_invalid_state_id)
|
|
||||||
{
|
|
||||||
__glibcxx_assert(__m.count(__ref._M_alt) > 0);
|
|
||||||
__ref._M_alt = __m[__ref._M_alt];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return _StateSeq(_M_nfa, __m[_M_start], __m[_M_end]);
|
return _StateSeq(_M_nfa, __m[_M_start], __m[_M_end]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue