[
https://issues.apache.org/jira/browse/STDCXX-769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12579278#action_12579278
]
Martin Sebor commented on STDCXX-769:
-------------------------------------
Well, that sounds like a design problem with the debugging iterators. It may
not be one that can be fixed without breaking binary compatibility but I think
if it is, in fact, a problem (there's some question regarding what iterator
validity means for non-invalidating operations like {{swap()}} or
{{list::splice()}}), we must fix it.
> __rw_debug_iter iterators are partially invalidated after swap() operation
> --------------------------------------------------------------------------
>
> Key: STDCXX-769
> URL: https://issues.apache.org/jira/browse/STDCXX-769
> Project: C++ Standard Library
> Issue Type: Bug
> Components: 24. Iterators
> Affects Versions: 4.1.2, 4.1.3, 4.1.4, 4.2.0
> Environment: All
> Reporter: Farid Zaripov
> Priority: Minor
>
> The __rw_debug_iter class contains pointer to associated container. After
> swap() operation the __rw_debug_iter iterators, obtained from container
> method (i.e. begin()) are associated with another container variable. Due to
> this any operation between iterators, obtained before swap and after swap
> will fail on assert (except operator==(), maybe some others).
> The testcase:
> {code:title=test.cpp}
> #include <vector>
> #include <cassert>
> int main ()
> {
> typedef std::vector<int> Vector;
> typedef Vector::iterator Iter;
> Vector v1, v2;
> v1.push_back (1);
> Iter v1_begin = v1.begin ();
> v1.swap (v2);
> assert (v1_begin == v2.begin ());
> assert (0 == v1_begin - v2.begin ());
> return 0;
> };
> {code}
> The testcase result:
> {noformat}
> rw/_iterbase.h:527: int __thiscall __rw::__rw_debug_iter<class
> std::vector<int,class std::allocator<int> >,int *,int *>::operator
> -<int*>(const class __rw::__rw_debug_iter<class std::vector<int,class
> std::allocator<int> >,int *,int *> &) const: Assertion '_C_cont && _C_cont ==
> __rhs._C_cont' failed.
> This application has requested the Runtime to terminate it in an unusual way.
> Please contact the application's support team for more information.
> {noformat}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.