diff options
author | Daniel Kruegler <daniel.kruegler@gmail.com> | 2014-11-14 04:23:06 +0000 |
---|---|---|
committer | Tim Shen <timshen@gcc.gnu.org> | 2014-11-14 04:23:06 +0000 |
commit | b82e9b016f16f3a85ca33c5ea6896266c3cc662a (patch) | |
tree | 6999198d8307e49738d059c7442900ec953ee5c8 /libstdc++-v3/include/bits/regex.h | |
parent | b16abbcb8530ab4601873c978c50422960d0faee (diff) | |
download | gcc-b82e9b016f16f3a85ca33c5ea6896266c3cc662a.zip gcc-b82e9b016f16f3a85ca33c5ea6896266c3cc662a.tar.gz gcc-b82e9b016f16f3a85ca33c5ea6896266c3cc662a.tar.bz2 |
regex.h: Support embedded zeros in sub_match comparisons (DR 2217)
2014-11-13 Daniel Kruegler <daniel.kruegler@gmail.com>
* include/bits/regex.h: Support embedded zeros in sub_match
comparisons (DR 2217)
* testsuite/28_regex/sub_match/embedded_zeros_cmp.cc:
Add test cases for embedded zeros
From-SVN: r217535
Diffstat (limited to 'libstdc++-v3/include/bits/regex.h')
-rw-r--r-- | libstdc++-v3/include/bits/regex.h | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/libstdc++-v3/include/bits/regex.h b/libstdc++-v3/include/bits/regex.h index 30189e3..6ff9a82 100644 --- a/libstdc++-v3/include/bits/regex.h +++ b/libstdc++-v3/include/bits/regex.h @@ -1006,7 +1006,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline bool operator==(const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs) - { return __rhs.compare(__lhs.c_str()) == 0; } + { + typedef typename sub_match<_Bi_iter>::string_type string_type; + return __rhs.compare(string_type(__lhs.data(), __lhs.size())) == 0; + } /** * @brief Tests the inequivalence of a string and a regular expression @@ -1031,7 +1034,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline bool operator<(const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs) - { return __rhs.compare(__lhs.c_str()) > 0; } + { + typedef typename sub_match<_Bi_iter>::string_type string_type; + return __rhs.compare(string_type(__lhs.data(), __lhs.size())) > 0; + } /** * @brief Tests the ordering of a string and a regular expression submatch. @@ -1080,7 +1086,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline bool operator==(const sub_match<_Bi_iter>& __lhs, const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __rhs) - { return __lhs.compare(__rhs.c_str()) == 0; } + { + typedef typename sub_match<_Bi_iter>::string_type string_type; + return __lhs.compare(string_type(__rhs.data(), __rhs.size())) == 0; + } /** * @brief Tests the inequivalence of a regular expression submatch and a @@ -1105,7 +1114,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline bool operator<(const sub_match<_Bi_iter>& __lhs, const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __rhs) - { return __lhs.compare(__rhs.c_str()) < 0; } + { + typedef typename sub_match<_Bi_iter>::string_type string_type; + return __lhs.compare(string_type(__rhs.data(), __rhs.size())) < 0; + } /** * @brief Tests the ordering of a regular expression submatch and a string. |