Don't use __glibcxx_assert to check class invariants
authorJonathan Wakely <jwakely@redhat.com>
Wed, 19 Sep 2018 11:20:51 +0000 (12:20 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Wed, 19 Sep 2018 11:20:51 +0000 (12:20 +0100)
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

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/regex_automaton.tcc

index 433bcdd..5911a29 100644 (file)
@@ -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>
 
        PR libstdc++/87135
index 7a0e6a3..5993fcf 100644 (file)
@@ -220,16 +220,9 @@ namespace __detail
          auto __v = __it.second;
          auto& __ref = _M_nfa[__v];
          if (__ref._M_next != _S_invalid_state_id)
-           {
-             __glibcxx_assert(__m.count(__ref._M_next) > 0);
-             __ref._M_next = __m[__ref._M_next];
-           }
-         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];
-             }
+           __ref._M_next = __m.find(__ref._M_next)->second;
+         if (__ref._M_has_alt() && __ref._M_alt != _S_invalid_state_id)
+           __ref._M_alt = __m.find(__ref._M_alt)->second;
        }
       return _StateSeq(_M_nfa, __m[_M_start], __m[_M_end]);
     }