Issue Details (XML | Word | Printable)

Key: STDCXX-632
Type: Bug Bug
Status: Reopened Reopened
Priority: Minor Minor
Assignee: Unassigned
Reporter: Farid Zaripov
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
C++ Standard Library

std::string::insert (iterator, InputIterator, InputIterator) inserting self incorrect

Created: 01/Nov/07 06:22 PM   Updated: 11/Jul/09 12:06 AM
Return to search
Component/s: 21. Strings
Affects Version/s: 4.1.2, 4.1.3, 4.1.4, 4.2.0
Fix Version/s: 4.3.0

Time Tracking:
Not Specified

Environment: All
Issue Links:
Dependants
 
dependent
 

Severity: Incorrect Behavior


 Description  « Hide
The 21.string.insert.cpp test has been failing a number of assertions for self-referential test cases that exercise the ability to insert a substring of a string into itself using the insert(iterator, InputIterator, InputIterator) member template specialization for InputIterator being an actual Input Iterator. The program below reproduces the problem in a small isolated test case.

#include <cassert>
#include <string>

int main ()
{
std::string s ("abc");

typedef const unsigned char UChar;
s.insert (s.begin (), (UChar*)&s [1], (UChar*)&s [2]);

assert ("babc" == s);
}



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Farid Zaripov made changes - 01/Nov/07 06:22 PM
Field Original Value New Value
Link This issue depends upon STDCXX-170 [ STDCXX-170 ]
Farid Zaripov added a comment - 01/Nov/07 06:22 PM
Since string::insert() is implemented in terms of replace() resolving STDCXX-170 will also resolve this issue.

Farid Zaripov made changes - 01/Nov/07 06:23 PM
Summary std::string::insert (InputIterator, InputIterator) inserting self incorrect std::string::insert (iterator, InputIterator, InputIterator) inserting self incorrect
Farid Zaripov made changes - 01/Nov/07 06:24 PM
Link This issue blocks STDCXX-633 [ STDCXX-633 ]
Farid Zaripov made changes - 21/Nov/07 06:26 PM
Assignee Farid Zaripov [ farid ]
Farid Zaripov added a comment - 22/Feb/08 05:42 PM
Fixed in STDCXX-170.

Will be closed after adding the regression test for the issue.


Farid Zaripov made changes - 22/Feb/08 05:42 PM
Resolution Fixed [ 1 ]
Status Open [ 1 ] Resolved [ 5 ]
Farid Zaripov added a comment - 17/Mar/08 02:32 PM
The STDCXX-170 issue is reverted and deferred to 4.3 release.
Deferring this issue too.

Farid Zaripov made changes - 17/Mar/08 02:32 PM
Fix Version/s 4.2.1 [ 12312690 ]
Fix Version/s 4.3 [ 12312692 ]
Farid Zaripov made changes - 17/Mar/08 02:32 PM
Status Resolved [ 5 ] Reopened [ 4 ]
Resolution Fixed [ 1 ]
Farid Zaripov added a comment - 17/Mar/08 04:16 PM
The regression test added in trunk thus: http://svn.apache.org/viewvc?rev=637959&view=rev

Repository Revision Date User Message
ASF #637959 Mon Mar 17 16:17:07 UTC 2008 faridz 2008-03-17 Farid Zaripov <farid_zaripov@epam.com>

* tests/regress/21.string.insert.STDCXX-632.cpp: Regression test for STDCXX-632.
Files Changed
ADD /stdcxx/trunk/tests/regress/21.string.insert.stdcxx-632.cpp

Repository Revision Date User Message
ASF #643535 Tue Apr 01 19:43:23 UTC 2008 faridz 2008-04-01 Farid Zaripov <farid_zaripov@epam.com>

* etc/config/xfail.txt (21.string.assign.STDCXX-629): Added an expected test
failure due to STDCXX-629.
(21.string.insert.STDCXX-632): Added an expected test failure due to STDCXX-632.
(21.string.replace.STDCXX-170): Added an expected test failure due to STDCXX-170.
Files Changed
MODIFY /stdcxx/trunk/etc/config/xfail.txt

Farid Zaripov made changes - 14/May/08 04:45 PM
Assignee Farid Zaripov [ farid ]
Repository Revision Date User Message
ASF #660333 Mon May 26 23:16:03 UTC 2008 sebor 2008-05-26 Martin Sebor <sebor@roguewave.com>

Merged revs 650369 650374 650370 650361 629551 635441 650360 650356
635444 650366 637959 650352 650353 from trunk.

2008-04-21 Martin Sebor <sebor@roguewave.com>

* tests/regress/27.stringbuf.seekoff.STDCXX-295.cpp: Added
a regression test for STDCXX-295.

2008-04-21 Martin Sebor <sebor@roguewave.com>

* tests/regress/21.char.traits.find.STDCXX-541.cpp: Added a regression
test for STDCXX-541.

2008-04-21 Martin Sebor <sebor@roguewave.com>

* tests/regress/23.vector.cons.STDCXX-294.cpp: Added a regression
test for STDCXX-294.

2008-04-21 Martin Sebor <sebor@roguewave.com>

* tests/regress/25.random.shuffle.STDCXX-126.cpp: Added
a regression test for STDCXX-126.

2008-02-20 Farid Zaripov <farid_zaripov@epam.com>

* tests/regress/21.string.replace.STDCXX-170.cpp: New
regression test for STDCXX-170 issue.

2008-03-10 Farid Zaripov <farid_zaripov@epam.com>

* tests/regress/21.string.replace.STDCXX-170.cpp: Added testcase with
_InputIter as string::iterator. Removed testcase with _InputIter as
UChar* (this testcase would fail), testing with _InputIter as char*
instead.

2008-04-21 Martin Sebor <sebor@roguewave.com>

* tests/regress/27.stringbuf.overflow.STDCXX-149.cpp: Added
a regression test for STDCXX-149.

2008-04-21 Martin Sebor <sebor@roguewave.com>

* tests/regress/27.filebuf.sgetn.STDCXX-161.cpp: Added a regression
test for STDCXX-161.

2008-03-10 Farid Zaripov <farid_zaripov@epam.com>

* tests/regress/21.string.assign.STDCXX-629.cpp: Regression
test for STDCXX-629 issue.

2008-04-21 Martin Sebor <sebor@roguewave.com>

* tests/regress/26.valarray.cshift.STDCXX-316.cpp: Added
a regression test for STDCXX-316.

2008-03-17 Farid Zaripov <farid_zaripov@epam.com>

* tests/regress/21.string.insert.STDCXX-632.cpp: Regression test for
STDCXX-632.

2008-04-21 Martin Sebor <sebor@roguewave.com>

* tests/regress/27.istream.get.STDCXX-60.cpp: Added a regression
test for STDCXX-60.

2008-04-21 Martin Sebor <sebor@roguewave.com>

* tests/regress/27.istream.getline.STDCXX-59.cpp: Added a regression
test for STDCXX-59.
Files Changed
ADD /stdcxx/branches/4.2.x/tests/regress/27.stringbuf.seekoff.stdcxx-295.cpp (from /stdcxx/trunk/tests/regress/27.stringbuf.seekoff.stdcxx-295.cpp)
ADD /stdcxx/branches/4.2.x/tests/regress/26.valarray.cshift.stdcxx-316.cpp (from /stdcxx/trunk/tests/regress/26.valarray.cshift.stdcxx-316.cpp)
ADD /stdcxx/branches/4.2.x/tests/regress/21.char.traits.find.stdcxx-541.cpp (from /stdcxx/trunk/tests/regress/21.char.traits.find.stdcxx-541.cpp)
ADD /stdcxx/branches/4.2.x/tests/regress/21.string.insert.stdcxx-632.cpp (from /stdcxx/trunk/tests/regress/21.string.insert.stdcxx-632.cpp)
ADD /stdcxx/branches/4.2.x/tests/regress/23.vector.cons.stdcxx-294.cpp (from /stdcxx/trunk/tests/regress/23.vector.cons.stdcxx-294.cpp)
ADD /stdcxx/branches/4.2.x/tests/regress/25.random.shuffle.stdcxx-126.cpp (from /stdcxx/trunk/tests/regress/25.random.shuffle.stdcxx-126.cpp)
ADD /stdcxx/branches/4.2.x/tests/regress/21.string.assign.stdcxx-629.cpp (from /stdcxx/trunk/tests/regress/21.string.assign.stdcxx-629.cpp)
ADD /stdcxx/branches/4.2.x/tests/regress/27.filebuf.sgetn.stdcxx-161.cpp (from /stdcxx/trunk/tests/regress/27.filebuf.sgetn.stdcxx-161.cpp)
ADD /stdcxx/branches/4.2.x/tests/regress/27.istream.getline.stdcxx-59.cpp (from /stdcxx/trunk/tests/regress/27.istream.getline.stdcxx-59.cpp)
ADD /stdcxx/branches/4.2.x/tests/regress/27.stringbuf.overflow.stdcxx-149.cpp (from /stdcxx/trunk/tests/regress/27.stringbuf.overflow.stdcxx-149.cpp)
ADD /stdcxx/branches/4.2.x/tests/regress/27.istream.get.stdcxx-60.cpp (from /stdcxx/trunk/tests/regress/27.istream.get.stdcxx-60.cpp)
ADD /stdcxx/branches/4.2.x/tests/regress/21.string.replace.stdcxx-170.cpp (from /stdcxx/trunk/tests/regress/21.string.replace.stdcxx-170.cpp)

Travis Vitek made changes - 06/Jun/08 04:44 PM
Assignee Travis Vitek [ vitek ]
Travis Vitek made changes - 11/Jul/09 12:06 AM
Assignee Travis Vitek [ vitek ]