aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/bits/regex.h
diff options
context:
space:
mode:
authorDaniel Kruegler <daniel.kruegler@gmail.com>2014-11-14 04:23:06 +0000
committerTim Shen <timshen@gcc.gnu.org>2014-11-14 04:23:06 +0000
commitb82e9b016f16f3a85ca33c5ea6896266c3cc662a (patch)
tree6999198d8307e49738d059c7442900ec953ee5c8 /libstdc++-v3/include/bits/regex.h
parentb16abbcb8530ab4601873c978c50422960d0faee (diff)
downloadgcc-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.h20
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.