gcc/libstdc++-v3
Jeremy Sawicki 3ffa55de60 Rope iterators: don't retain pointers when copied
Rope iterators sometimes contain pointers to an internal buffer
inside the iterator itself.  When such an iterator is copied, the
copy incorrectly retains pointers to the original.

This patch takes the simple approach of not copying the cached
information when the internal buffer is being used, instead
requiring it to be recomputed when the copied iterator is
dereferenced.  An alternative would be to adjust the pointers so
they refer to the buffer in the copy.

2018-08-14  Jeremy Sawicki  <jeremy-gcc@sawicki.us>

	* include/ext/rope (_Rope_iterator_base(const _Rope_iterator_base&))
	(_Rope_const_iterator::operator=(const _Rope_const_iterator&))
	(_Rope_iterator::operator=(const _Rope_iterator&)): Ensure
	copied/assigned rope iterators don't retain pointers to the iterator
	they were copied/assigned from.
	* testsuite/ext/rope/7.cc: New.

From-SVN: r263534
2018-08-14 12:23:50 +01:00
..
config Define monotonic_buffer_resource members out-of-line 2018-08-07 12:31:16 +01:00
doc PR libstdc++/68210 adjust operator new and delete for LWG 206 2018-08-10 21:20:27 +01:00
include Rope iterators: don't retain pointers when copied 2018-08-14 12:23:50 +01:00
libsupc++ Minor optimisations in operator new(size_t, align_val_t) 2018-08-13 19:54:38 +01:00
po PR libstdc++/86450 use -Wabi=2 and simplify -Werror use 2018-07-17 14:18:47 +01:00
python PR libstdc++/86751 default assignment operators for std::pair 2018-07-31 23:31:20 +01:00
scripts * scripts/create_testsuite_files: Fix typo in comment. 2018-07-16 18:42:20 +01:00
src Define monotonic_buffer_resource members out-of-line 2018-08-07 12:31:16 +01:00
testsuite Rope iterators: don't retain pointers when copied 2018-08-14 12:23:50 +01:00
ChangeLog Rope iterators: don't retain pointers when copied 2018-08-14 12:23:50 +01:00
ChangeLog-1998
ChangeLog-1999
ChangeLog-2000
ChangeLog-2001
ChangeLog-2002
ChangeLog-2003
ChangeLog-2004
ChangeLog-2005
ChangeLog-2006
ChangeLog-2007
ChangeLog-2008
ChangeLog-2009
ChangeLog-2010
ChangeLog-2011
ChangeLog-2012
ChangeLog-2013
ChangeLog-2014
ChangeLog-2015 Update copyright years. 2016-01-04 15:30:50 +01:00
ChangeLog-2016 Update copyright years. 2017-01-01 13:07:43 +01:00
ChangeLog-2017 Update copyright years. 2018-01-03 11:03:58 +01:00
Makefile.am Update copyright years. 2018-01-03 11:03:58 +01:00
Makefile.in PR libstdc++/86450 use -Wabi=2 and simplify -Werror use 2018-07-17 14:18:47 +01:00
README
acinclude.m4 Add new src/c++17 directory to list in acinclude.m4 2018-07-25 12:01:39 +01:00
aclocal.m4 Build libgo with -Wa,-nH if possible (PR go/78978) [non-libgo parts] 2017-01-06 14:33:47 +00:00
config.h.in Fix bootstrap failure for bare metal due to autoconf link tests 2018-06-18 17:01:24 +01:00
configure Revert "libstdc++-v3: Have aligned_alloc() on Newlib" 2018-08-13 19:54:21 +01:00
configure.ac Revert "libstdc++-v3: Have aligned_alloc() on Newlib" 2018-08-13 19:54:21 +01:00
configure.host Separate Solaris/SPARC and x86 baselines 2017-02-02 16:24:03 +00:00
crossconfig.m4 crossconfig.m4: Handle OpenBSD just like NetBSD. 2018-06-18 11:28:53 -06:00
fragment.am PR libstdc++/86450 use -Wabi=2 and simplify -Werror use 2018-07-17 14:18:47 +01:00
linkage.m4

README

file: libstdc++-v3/README

New users may wish to point their web browsers to the file
index.html in the 'doc/html' subdirectory.  It contains brief
building instructions and notes on how to configure the library in
interesting ways.