re PR libstdc++/59531 (string_view overrun in copy operation)
[gcc.git] / libstdc++-v3 / ChangeLog
1 2014-01-24 Ed Smith-Rowland <3dw4rd@verizon.net>
2
3 PR libstdc++/59531
4 * testsuite/experimental/string_view/operations/copy/char/1.cc: New.
5 * testsuite/experimental/string_view/operations/copy/wchar_t/1.cc: New.
6
7 2014-01-24 Ed Smith-Rowland <3dw4rd@verizon.net>
8 Peter A. Bigot <pab@pabigot.com>
9
10 PR libstdc++/59531
11 * include/experimental/string_view
12 (copy(_CharT*, size_type, size_type) const): Correct throw string.
13 Correct copy start location.
14
15 2014-01-24 Ed Smith-Rowland <3dw4rd@verizon.net>
16 Peter A. Bigot <pab@pabigot.com>
17
18 PR libstdc++/59530
19 * include/experimental/string_view (operator[](size_type) const):
20 Fix one-off index error in debug check.
21 * testsuite/experimental/string_view/element_access/char/1.cc: Don't
22 test basic_string_view at size().
23 * testsuite/experimental/string_view/element_access/wchar_t/1.cc: Ditto.
24
25 2014-01-24 Ed Smith-Rowland <3dw4rd@verizon.net>
26 Peter A. Bigot <pab@pabigot.com>
27
28 PR libstdc++/59529
29 * include/experimental/string_view
30 (basic_string_view(const _CharT*, size_type)): Don't care if len == 0.
31 * testsuite/experimental/string_view/operations/substr/char/1.cc:
32 Comment out catch of out_of_range; No terminating null
33 in basic_string_view. Check begin == end.
34 * testsuite/experimental/string_view/operations/substr/wchar_t/1.cc:
35 Ditto.
36
37 2014-01-24 Jonathan Wakely <jwakely@redhat.com>
38
39 PR libstdc++/59548
40 * include/debug/safe_base.h (_Safe_sequence_base): Define copy
41 constructor to prevent it being implicitly defined as deleted, but
42 do not copy anything.
43 * include/debug/safe_unordered_base.h (_Safe_unordered_container_base):
44 Define copy and move constructors similar to _Safe_sequence_base's.
45 * testsuite/23_containers/unordered_map/59548.cc: New.
46
47 2014-01-23 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
48 Steve Ellcey <sellcey@mips.com>
49
50 * acinclude.m4 (GLIBCXX_CHECK_TMPNAM): New check for tmpnam
51 function.
52 * configure.ac: Use GLIBCXX_CHECK_TMPNAM.
53 * (configure, config.h.in): Regenerate.
54 * include/c_global/cstdio: Guard ::tmpnam with _GLIBCXX_USE_TMPNAM
55
56 2014-01-23 Jonathan Wakely <jwakely@redhat.com>
57
58 * doc/xml/faq.xml (a-how_to_set_paths): Expand FAQ answer.
59 * doc/xml/manual/abi.xml (abi.versioning.history): Correct symver.
60
61 PR libstdc++/59872
62 * include/bits/stl_map.h (map::operator=(map&&)): Fix comment.
63 * include/bits/stl_multimap.h (multimap::operator=(multimap&&)):
64 Likewise.
65 * include/bits/stl_multiset.h (multiset::operator=(multiset&&)):
66 Likewise.
67 * include/bits/stl_set.h (set::operator=(set&&)): Likewise.
68 * include/bits/stl_tree.h (_Rb_tree::_M_move_data): New overloaded
69 functions to perform moving or copying of elements from rvalue tree.
70 (_Rb_tree::_Rb_tree(_Rb_tree&&)): Use _M_move_data.
71 (_Rb_tree::_Rb_tree(_Rb_tree&&, _Node_allocator&&)): Likewise.
72 * testsuite/23_containers/map/59872.cc: New.
73 * testsuite/23_containers/map/56613.cc: Remove duplicate include.
74
75 2014-01-22 Jonathan Wakely <jwakely@redhat.com>
76
77 * include/bits/stl_deque.h (_Deque_impl): Move comment.
78
79 PR libstdc++/58764
80 * include/bits/stl_deque.h (deque::deque(const allocator_type&):
81 Split into separate default constructor and constructor taking
82 allocator.
83 * include/bits/stl_list.h (list::list(const allocator_type&): Likewise.
84 * include/bits/stl_vector.h (vector::vector(const allocator_type&):
85 Likewise.
86 * include/debug/deque (deque::deque(const allocator_type&)): Likewise.
87 * include/debug/list (list::list(const _Allocator&)): Likewise.
88 * include/debug/map.h (map::map(const _Compare&, const _Allocator&)):
89 Likewise.
90 * include/debug/multimap.h
91 (multimap::multimap(const _Compare&, const _Allocator&)): Likewise.
92 * include/debug/set.h (set::set(const _Compare&, const _Allocator&)):
93 Likewise.
94 * include/debug/multiset.h
95 (multiset::multiset(const _Compare&, const _Allocator&)): Likewise.
96 * include/debug/vector (vector::vector(const allocator_type&)):
97 Likewise.
98 * include/profile/deque (deque::deque(const _Allocator&)): Likewise.
99 * include/profile/list (list::list(const _Allocator&)): Likewise.
100 * include/profile/map.h
101 (map::map(const _Compare&, const _Allocator&)): Likewise.
102 * include/profile/multimap.h
103 (multimap::multimap(const _Compare&, const _Allocator&)): Likewise.
104 * include/profile/set.h
105 (set::set(const _Compare&, const _Allocator&)): Likewise.
106 * include/profile/multiset.h
107 (multiset::multiset(const _Compare&, const _Allocator&)): Likewise.
108 * include/profile/vector (vector::vector(const _Allocator&)):
109 Likewise.
110 * testsuite/23_containers/deque/58764.cc: New.
111 * testsuite/23_containers/list/58764.cc: New.
112 * testsuite/23_containers/map/58764.cc: New.
113 * testsuite/23_containers/multimap/58764.cc: New.
114 * testsuite/23_containers/set/58764.cc: New.
115 * testsuite/23_containers/multiset/58764.cc: New.
116 * testsuite/23_containers/vector/58764.cc: New.
117 * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
118 Adjust dg-error line number.
119 * testsuite/23_containers/deque/requirements/dr438/
120 constructor_1_neg.cc: Likewise.
121 * testsuite/23_containers/deque/requirements/dr438/
122 constructor_2_neg.cc: Likewise.
123 * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
124 Likewise.
125 * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
126 Likewise.
127 * testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
128 Likewise.
129 * testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
130 Likewise.
131 * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
132 Likewise.
133 * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
134 Likewise.
135 * testsuite/23_containers/vector/requirements/dr438/
136 constructor_1_neg.cc: Likewise.
137 * testsuite/23_containers/vector/requirements/dr438/
138 constructor_2_neg.cc: Likewise.
139 * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
140 Likewise.
141
142 PR libstdc++/58764 (again)
143 * include/bits/stl_list.h (list): Make default constructor's exception
144 specification conditional.
145 * include/bits/stl_vector.h (vector): Likewise.
146 * testsuite/util/testsuite_allocator.h (SimpleAllocator): Add noexcept
147 to default constructor.
148 * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
149 Adjust dg-error line number.
150 * testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
151 Likewise.
152 * testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
153 Likewise.
154 * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
155 Likewise.
156 * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
157 Likewise.
158 * testsuite/23_containers/vector/requirements/dr438/
159 constructor_1_neg.cc: Likewise.
160 * testsuite/23_containers/vector/requirements/dr438/
161 constructor_2_neg.cc: Likewise.
162 * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
163 Likewise.
164
165 2014-01-21 Tim Shen <timshen91@gmail.com>
166
167 * include/bits/regex.tcc: Remove incorrect `nosubs` handling.
168 * include/bits/regex_scanner.tcc: Handle `nosubs` correctly.
169 * testsuite/28_regex/constants/syntax_option_type.cc: Add a test case.
170
171 2014-01-21 Jonathan Wakely <jwakely@redhat.com>
172
173 PR libstdc++/56267
174 * include/bits/hashtable.h (__cache_default): Do not depend on
175 whether the hash function is DefaultConstructible or CopyAssignable.
176 (_Hashtable): Adjust static assertions.
177 * doc/xml/manual/containers.xml (containers.unordered.cache): Update.
178 * testsuite/23_containers/unordered_set/instantiation_neg.cc: Adjust
179 dg-error line number.
180 * testsuite/23_containers/unordered_set/
181 not_default_constructible_hash_neg.cc: Remove.
182
183 2014-01-20 François Dumont <fdumont@gcc.gnu.org>
184
185 * scripts/create_testsuite_files: Add testsuite/experimental in
186 the list of folders to search for tests.
187 * include/experimental/string_view
188 (basic_string_view<>::operator[]): Comment _GLIBCXX_DEBUG_ASSERT,
189 incompatible with constexpr qualifier.
190 (basic_string_view<>::front()): Likewise.
191 (basic_string_view<>::back()): Likewise.
192 * testsuite/experimental/string_view/element_access/wchar_t/2.cc:
193 Merge dg-options directives into one.
194 * testsuite/experimental/string_view/element_access/char/2.cc:
195 Likewise. Remove invalid experimental namespace scope on
196 string_view_type.
197
198 2014-01-20 Jonathan Wakely <jwakely@redhat.com>
199
200 PR libstdc++/56267
201 * include/bits/hashtable_policy.h (_Hash_code_base<... false>): Grant
202 friendship to _Local_iterator_base<..., false>.
203 (_Local_iterator_base): Give protected access to all existing members.
204 (_Local_iterator_base::_M_curr()): New public accessor.
205 (_Local_iterator_base::_M_get_bucket()): New public accessor.
206 (_Local_iterator_base<..., false>::_M_init()): New function to manage
207 the lifetime of the _Hash_code_base explicitly.
208 (_Local_iterator_base<..., false>::_M_destroy()): Likewise.
209 (_Local_iterator_base<..., false>): Define copy constructor and copy
210 assignment operator that use new functions to manage _Hash_code_base.
211 (operator==(const _Local_iterator_base&, const _Local_iterator_base&),
212 operator==(const _Local_iterator_base&, const _Local_iterator_base&)):
213 Use public API for _Local_iterator_base.
214 * include/debug/safe_local_iterator.h (_Safe_local_iterator): Likewise.
215 * include/debug/unordered_map (__debug::unordered_map::erase(),
216 __debug::unordered_multimap::erase()): Likewise.
217 * include/debug/unordered_set (__debug::unordered_set::erase(),
218 __debug::unordered_multiset::erase()): Likewise.
219 * testsuite/23_containers/unordered_set/56267-2.cc: New test.
220
221 2014-01-19 Tim Shen <timshen91@gmail.com>
222
223 * include/bits/regex_compiler.h (_Comipler<>::_M_quantifier()):
224 Fix parse error of multiple consecutive quantifiers like "a**".
225 * include/bits/regex_compiler.tcc (_Comipler<>::_M_quantifier()):
226 Likewise.
227 * testsuite/28_regex/basic_regex/multiple_quantifiers.cc: New.
228
229 2014-01-17 François Dumont <fdumont@gcc.gnu.org>
230
231 * include/profile/set.h (set): Implement C++11 allocator-aware
232 container requirements.
233 * include/profile/map.h (map): Likewise.
234 * include/profile/multiset.h (multiset): Likewise.
235 * include/profile/multimap.h (multimap): Likewise.
236 * include/profile/set.h
237 (set::operator=(const set&)): Define as default in C++11 mode.
238 (set::operator=(set&&)): Likewise.
239 * include/profile/map.h
240 (map::operator=(const map&)): Likewise.
241 (map::operator=(map&&)): Likewise.
242 * include/profile/multiset.h
243 (multiset::operator=(const multiset&)): Likewise.
244 (multiset::operator=(multiset&&)): Likewise.
245 * include/profile/multimap.h
246 (multimap::operator=(const multimap&)): Likewise.
247 (multimap::operator=(multimap&&)): Likewise.
248 * include/profile/set.h (set::operator=(std::initializer_list<>)):
249 Rely on the same operator from normal mode.
250 * include/profile/map.h (map::operator=(std::initializer_list<>)):
251 Likewise.
252 * include/profile/multiset.h
253 (multiset::operator=(std::initializer_list<>)): Likewise.
254 * include/profile/multimap.h
255 (multimap::operator=(std::initializer_list<>)): Likewise.
256 * include/profile/set.h (set::swap(set&)): Add noexcept
257 specification.
258 * include/profile/map.h (map::swap(map&)): Likewise.
259 * include/profile/multiset.h (multiset::swap(multiset&)): Likewise.
260 * include/profile/multimap.h (multimap::swap(multimap&)): Likewise.
261
262 2014-01-17 Tim Shen <timshen91@gmail.com>
263
264 * include/bits/regex_automaton.tcc (_StateSeq<>::_M_clone()): Do not
265 use std::map.
266 * include/bits/regex_automaton.h: Do not use std::set.
267 * include/bits/regex_compiler.h (_BracketMatcher<>::_M_add_char(),
268 _BracketMatcher<>::_M_add_collating_element(),
269 _BracketMatcher<>::_M_add_equivalence_class(),
270 _BracketMatcher<>::_M_make_range()): Likewise.
271 * include/bits/regex_compiler.tcc (_BracketMatcher<>::_M_apply()):
272 Likewise.
273 * include/bits/regex_executor.h: Do not use std::queue.
274 * include/bits/regex_executor.tcc (_Executor<>::_M_main(),
275 _Executor<>::_M_dfs()): Likewise.
276 * include/std/regex: Remove <map>, <set> and <queue>.
277
278 2014-01-17 Tim Shen <timshen91@gmail.com>
279
280 * include/bits/regex.h (__compile_nfa<>(), basic_regex<>::basic_regex(),
281 basic_regex<>::assign()): Change __compile_nfa to accept
282 const _CharT* only.
283 * include/bits/regex_compiler.h: Change _Compiler's template
284 argument from <_FwdIter, _TraitsT> to <_TraitsT>.
285 * include/bits/regex_compiler.tcc: Likewise.
286
287 2014-01-17 Tim Shen <timshen91@gmail.com>
288
289 * include/bits/regex_compiler.h: Change _ScannerT into char-type
290 templated.
291 * include/bits/regex_scanner.h (_Scanner<>::_Scanner()): Separate
292 _ScannerBase from _Scanner; Change _Scanner's template argument from
293 _FwdIter to _CharT. Avoid use of std::map and std::set by using arrays
294 instead.
295 * include/bits/regex_scanner.tcc (_Scanner<>::_Scanner(),
296 _Scanner<>::_M_scan_normal(), _Scanner<>::_M_eat_escape_ecma(),
297 _Scanner<>::_M_eat_escape_posix(), _Scanner<>::_M_eat_escape_awk()):
298 Likewise.
299 * include/std/regex: Add <cstring> for using strchr.
300
301 2014-01-17 Tim Shen <timshen91@gmail.com>
302
303 * bits/regex_automaton.tcc: Indentation fix.
304 * bits/regex_compiler.h (__compile_nfa<>(), _Compiler<>,
305 _RegexTranslator<> _AnyMatcher<>, _CharMatcher<>,
306 _BracketMatcher<>): Add bool option template parameters and
307 specializations to make matching more efficient and space saving.
308 * bits/regex_compiler.tcc: Likewise.
309
310 2014-01-15 François Dumont <fdumont@gcc.gnu.org>
311
312 PR libstdc++/59712
313 * include/bits/hashtable_policy.h: Fix some long lines.
314 * include/bits/hashtable.h (__hash_code_base_access): Define and
315 use it to check its _M_bucket_index noexcept qualification. Use
316 also in place of...
317 (__access_protected_ctor): ...this.
318 * testsuite/23_containers/unordered_set/instantiation_neg.cc:
319 Adapt line number.
320 * testsuite/23_containers/unordered_set/
321 not_default_constructible_hash_neg.cc: Likewise.
322
323 2014-01-13 François Dumont <fdumont@gcc.gnu.org>
324
325 * include/debug/set.h (set): Implement C++11 allocator-aware
326 container requirements.
327 * include/debug/map.h (map): Likewise.
328 * include/debug/multiset.h (multiset): Likewise.
329 * include/debug/multimap.h (multimap): Likewise.
330 * include/debug/set.h (set::operator=(set&&)): Add noexcept and
331 fix implementation regarding management of safe iterators.
332 * include/debug/map.h (map::operator=(map&&)): Likewise.
333 * include/debug/multiset.h (multiset::operator=(multiset&&)): Likewise.
334 * include/debug/multimap.h (multimap::operator=(multimap&&)):
335 Likewise.
336 * include/debug/set.h (set::operator=(std::initializer_list<>)):
337 Rely on the same operator from normal mode.
338 * include/debug/map.h (map::operator=(std::initializer_list<>)):
339 Likewise.
340 * include/debug/multiset.h
341 (multiset::operator=(std::initializer_list<>)): Likewise.
342 * include/debug/multimap.h
343 (multimap::operator=(std::initializer_list<>)): Likewise.
344 * include/debug/set.h (set::swap(set&)): Add noexcept
345 specification, add allocator equality check.
346 * include/debug/map.h (map::swap(map&)): Likewise.
347 * include/debug/multiset.h (multiset::swap(multiset&)): Likewise.
348 * include/debug/multimap.h (multimap::swap(multimap&)): Likewise.
349
350 2014-01-10 Jonathan Wakely <jwakely@redhat.com>
351
352 PR libstdc++/59698
353 * doc/xml/manual/status_cxx1998.xml (iso.1998.specific): Markup
354 and stylistic improvements.
355 * doc/xml/manual/codecvt.xml (std.localization.facet.codecvt): Likewise
356 and update for C++11.
357 * doc/xml/manual/ctype.xml (std.localization.facet.ctype): Likewise.
358
359 PR libstdc++/59687
360 * doc/xml/manual/backwards_compatibility.xml
361 (backwards.third.nocreate_noreplace): Correct and expand.
362
363 PR libstdc++/59699
364 * doc/xml/manual/support.xml (std.support.types.null): Update links.
365
366 2014-01-09 Jonathan Wakely <jwakely@redhat.com>
367
368 PR libstdc++/59738
369 * include/bits/stl_vector.h (vector<>::_M_move_assign): Restore
370 support for non-Movable types.
371
372 PR libstdc++/59680
373 * src/c++11/thread.cc (__sleep_for): Fix call to ::sleep.
374
375 2014-01-08 François Dumont <fdumont@gcc.gnu.org>
376
377 * include/bits/stl_vector.h (std::vector<>::_M_move_assign): Pass
378 *this allocator instance when building temporary vector instance
379 so that *this allocator does not get moved.
380 * include/debug/safe_base.h
381 (_Safe_sequence_base(_Safe_sequence_base&&)): New.
382 * include/debug/vector (__gnu_debug::vector<>(vector&&)): Use new
383 move constructor from _Safe_sequence_base.
384 (__gnu_debug::vector<>(vector&&, const allocator_type&)): Swap
385 safe iterators if the instance is moved.
386 (__gnu_debug::vector<>::operator=(vector&&)): Likewise.
387 * testsuite/23_containers/vector/allocator/move.cc (test01): Add
388 check on a vector iterator.
389 * testsuite/23_containers/vector/allocator/move_assign.cc
390 (test02): Likewise.
391 (test03): New, test with a non-propagating allocator.
392 * testsuite/23_containers/vector/debug/move_assign_neg.cc: New.
393
394 2014-01-07 Tim Shen <timshen91@gmail.com>
395
396 * include/bits/regex_compiler.h (_AnyMatcher<>::_AnyMatcher(),
397 _AnyMatcher<>::operator(), _AnyMatcher<>::_M_apply(),
398 _CharMatcher<>::_CharMatcher(), _CharMatcher<>::_M_translate(),
399 _BracketMatcher<>::_BracketMatcher(), _BracketMatcher<>::operator(),
400 _BracketMatcher<>::_M_add_char(),
401 _BracketMatcher<>::_M_add_collating_element(),
402 _BracketMatcher<>::_M_add_equivalence_class(),
403 _BracketMatcher<>::_M_add_character_class(),
404 _BracketMatcher<>::_M_make_range(), _BracketMatcher<>::_M_ready(),
405 _BracketMatcher<>::_M_apply(), _BracketMatcher<>::_M_make_cache()):
406 Fix _AnyMatcher behavior of POSIX style and move _M_flags
407 to template parameter; Add cache for _BracketMatcher. Adjust
408 declarations from here...
409 * include/bits/regex.h (basic_regex<>::imbue()): ...to here. Also,
410 imbuing a regex will trigger a recompilation to rebuild the cache.
411 * include/bits/regex_compiler.tcc (_Compiler<>::_M_atom(),
412 _Compiler<>::_M_bracket_expression()): Adjust matchers' caller for
413 different template bool parameters.
414 * include/bits/regex_executor.h: Remove unnecessary declarations.
415 * include/std/regex: Adjust including orders.
416 * testsuite/28_regex/traits/char/user_defined.cc: New.
417 * testsuite/28_regex/traits/wchar_t/user_defined.cc: New.
418
419 2014-01-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
420
421 * config/abi/post/solaris2.9/baseline_symbols.txt: Regenerate.
422 * config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt: Likewise.
423 * config/abi/post/solaris2.10/baseline_symbols.txt: Likewise.
424 * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
425 * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
426
427 2014-01-02 Richard Sandiford <rdsandiford@googlemail.com>
428
429 Update copyright years
430
431 2014-01-02 Richard Sandiford <rdsandiford@googlemail.com>
432
433 * testsuite/18_support/new_handler.cc,
434 testsuite/18_support/terminate_handler.cc,
435 testsuite/18_support/unexpected_handler.cc: Use the standard form for
436 the copyright notice.
437 \f
438 Copyright (C) 2014 Free Software Foundation, Inc.
439
440 Copying and distribution of this file, with or without modification,
441 are permitted in any medium without royalty provided the copyright
442 notice and this notice are preserved.