Fix <rdar://problem/10255403> match_results::begin() is off by one
llvm-svn: 141494
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: 2a4812fd0463d5320fe7871df67103219818bbb5
diff --git a/include/regex b/include/regex
index 5e19569..760f4eb 100644
--- a/include/regex
+++ b/include/regex
@@ -5210,11 +5210,11 @@
const_reference suffix() const {return __suffix_;}
_LIBCPP_INLINE_VISIBILITY
- const_iterator begin() const {return empty() ? __matches_.end() : __matches_.begin() + 1;}
+ const_iterator begin() const {return empty() ? __matches_.end() : __matches_.begin();}
_LIBCPP_INLINE_VISIBILITY
const_iterator end() const {return __matches_.end();}
_LIBCPP_INLINE_VISIBILITY
- const_iterator cbegin() const {return empty() ? __matches_.end() : __matches_.begin() + 1;}
+ const_iterator cbegin() const {return empty() ? __matches_.end() : __matches_.begin();}
_LIBCPP_INLINE_VISIBILITY
const_iterator cend() const {return __matches_.end();}
diff --git a/test/re/re.results/re.results.acc/begin_end.pass.cpp b/test/re/re.results/re.results.acc/begin_end.pass.cpp
index e71dcac..80c06f2 100644
--- a/test/re/re.results/re.results.acc/begin_end.pass.cpp
+++ b/test/re/re.results/re.results.acc/begin_end.pass.cpp
@@ -27,8 +27,8 @@
std::match_results<const char*>::const_iterator i = m.begin();
std::match_results<const char*>::const_iterator e = m.end();
- assert(e - i == m.size() - 1);
- for (int j = 1; i != e; ++i, ++j)
+ assert(e - i == m.size());
+ for (int j = 0; i != e; ++i, ++j)
assert(*i == m[j]);
}
diff --git a/test/re/re.results/re.results.acc/cbegin_cend.pass.cpp b/test/re/re.results/re.results.acc/cbegin_cend.pass.cpp
index f56fe00..a983c8a 100644
--- a/test/re/re.results/re.results.acc/cbegin_cend.pass.cpp
+++ b/test/re/re.results/re.results.acc/cbegin_cend.pass.cpp
@@ -27,8 +27,8 @@
std::match_results<const char*>::const_iterator i = m.cbegin();
std::match_results<const char*>::const_iterator e = m.cend();
- assert(e - i == m.size() - 1);
- for (int j = 1; i != e; ++i, ++j)
+ assert(e - i == m.size());
+ for (int j = 0; i != e; ++i, ++j)
assert(*i == m[j]);
}