incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Farid Zaripov" <Farid_Zari...@epam.com>
Subject RE: string cow bug ([Fwd: Fwd: Update: string COW])
Date Fri, 13 Jun 2008 17:03:25 GMT
> -----Original Message-----
> From: Martin Sebor [mailto:msebor@gmail.com] On Behalf Of Martin Sebor
> Sent: Friday, June 13, 2008 7:12 PM
> To: dev@stdcxx.apache.org
> Subject: string cow bug ([Fwd: Fwd: Update: string COW])
> 
> ...attached is a test case I got from a fellow attendee of my 
> meeting for what at first blush looks like a COW bug in 
> stdcxx string. The expected output on line 4 is:
> 
> 2. cc1: 'H'
> 

21.3.1 p4:
-----------------------------
4 References, pointers, and iterators referring to the elements of a
basic_string sequence may be invalidated by the
following uses of that basic_string object:
- As an argument to non-member functions swap() (21.3.8.8), operator>>()
(21.3.8.9), and getline() (21.3.8.9).
- As an argument to basic_string::swap().
- Calling data() and c_str() member functions.
- Calling non-const member functions, except operator[], at, begin,
rbegin, end, and rend.
- Following construction or any of the above uses, except the forms of
insert and erase that return iterators, the
first call to non-const member functions operator[], at, begin, rbegin,
end, or rend.
-----------------------------

  The first call on non-const operator[] for s1 object located in "s1[0]
= 'H';" line. So after that line any references to the
elements are invalidated and cc1 should not be used after that line.

Farid.

Mime
View raw message