Message ID | CAG4ZjN=UdMVQUw2qmT0jCnqfn_Ed-yqCjRPG18HzrnLE-o3p7w@mail.gmail.com |
---|---|
State | New |
Headers | show |
On 06/01/15 21:03 -0800, Tim Shen wrote: >Bootstrapped and tested. It could be also patched to 4.9 branch. > >Thanks! > > >-- >Regards, >Tim Shen >commit dfe3a26759893849020a659b14fafe8b27e90dae >Author: timshen <timshen@google.com> >Date: Tue Jan 6 19:30:27 2015 -0800 > > PR libstdc++/64239 > No blank line here in the ChangeLog. > * include/bits/regex.h (match_results<>::swap): Use std::swap > instead of swap. > * include/bits/regex_compiler.tcc (_Compiler<>::_M_quantifier): > Likewise. > >diff --git a/libstdc++-v3/include/bits/regex.h b/libstdc++-v3/include/bits/regex.h >index 9b7ed8c..b520039 100644 >--- a/libstdc++-v3/include/bits/regex.h >+++ b/libstdc++-v3/include/bits/regex.h >@@ -1864,7 +1864,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 > swap(match_results& __that) > { > _Base_type::swap(__that); >- swap(_M_begin, __that._M_begin); >+ std::swap(_M_begin, __that._M_begin); This is swapping iterators, which can be user-defined types, so it should support finding a swap function by ADL, i.e. using std::swap; swap(_M_begin, __that._M_begin); > } > //@} Also, there should be a new test, since apparently we don't have any test that tries to call match_results::swap(match_results&).
diff --git a/libstdc++-v3/include/bits/regex.h b/libstdc++-v3/include/bits/regex.h index 9b7ed8c..b520039 100644 --- a/libstdc++-v3/include/bits/regex.h +++ b/libstdc++-v3/include/bits/regex.h @@ -1864,7 +1864,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 swap(match_results& __that) { _Base_type::swap(__that); - swap(_M_begin, __that._M_begin); + std::swap(_M_begin, __that._M_begin); } //@} diff --git a/libstdc++-v3/include/bits/regex_compiler.tcc b/libstdc++-v3/include/bits/regex_compiler.tcc index 57bafa3..33d7118 100644 --- a/libstdc++-v3/include/bits/regex_compiler.tcc +++ b/libstdc++-v3/include/bits/regex_compiler.tcc @@ -276,7 +276,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { auto& __tmp = (*_M_nfa)[__stack.top()]; __stack.pop(); - swap(__tmp._M_next, __tmp._M_alt); + std::swap(__tmp._M_next, __tmp._M_alt); } } _M_stack.push(__e);