From ab343bb5ae9cce4ad509029a0cc6ec504f5d8dc0 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Tue, 29 May 2018 17:04:37 +0000 Subject: [PATCH] Mark __clear_and_shrink() as noexcept. This prevents the generation of a catch block and call to terminate in string's move assignment. Thanks to Howard for the 'catch'. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333435 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/string | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/string b/include/string index 7218aa2e4..bfdd141cd 100644 --- a/include/string +++ b/include/string @@ -1259,7 +1259,7 @@ public: _LIBCPP_INLINE_VISIBILITY bool __invariants() const; - _LIBCPP_INLINE_VISIBILITY void __clear_and_shrink(); + _LIBCPP_INLINE_VISIBILITY void __clear_and_shrink() _NOEXCEPT; _LIBCPP_INLINE_VISIBILITY bool __is_long() const _NOEXCEPT @@ -3585,7 +3585,7 @@ basic_string<_CharT, _Traits, _Allocator>::__invariants() const template inline _LIBCPP_INLINE_VISIBILITY void -basic_string<_CharT, _Traits, _Allocator>::__clear_and_shrink() +basic_string<_CharT, _Traits, _Allocator>::__clear_and_shrink() _NOEXCEPT { clear(); if(__is_long())