From 4044e7c930381e5e070c7131c5b14a3dfd373259 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Wed, 19 Jun 2024 16:50:07 -0400 Subject: [PATCH 1/2] [libc++] Add release note for #95264 --- libcxx/docs/ReleaseNotes/18.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libcxx/docs/ReleaseNotes/18.rst b/libcxx/docs/ReleaseNotes/18.rst index 7ea13e6943dd4..3e19e7c33f6af 100644 --- a/libcxx/docs/ReleaseNotes/18.rst +++ b/libcxx/docs/ReleaseNotes/18.rst @@ -328,6 +328,15 @@ ABI Affecting Changes done to fix `#70494 `_ and the vendor communication is handled in `#70820 `_. +- LLVM 18.1.8 Fixed an issue that caused ``std::string`` to pass an incorrect size to ``allocator_traits::deallocate`` + when deallocating memory. The impact is different depending on a few factors: + - Users who don't use a custom allocator in ``std::string`` and don't enable sized deallocation (which is + off by default in Clang 18) will not be affected. This is expected to be the vast majority of users. + - Users who don't use a custom allocator in ``std::string`` but are enabling sized deallocation (e.g. with + ``-fsized-deallocation``) will notice that ``operator delete(void*, size_t)`` is now being passed the correct + size. This likely has no impact if they were not customizing ``operator delete``. + - Users who use a custom allocator in ``std::string`` will notice that they now get passed the correct allocation + size upon deallocation. Build System Changes -------------------- From 99a23b574283752ffdc69934c32f9f825ddf10ed Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Thu, 20 Jun 2024 13:46:04 -0400 Subject: [PATCH 2/2] Try to fix RST syntax error --- libcxx/docs/ReleaseNotes/18.rst | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/libcxx/docs/ReleaseNotes/18.rst b/libcxx/docs/ReleaseNotes/18.rst index 3e19e7c33f6af..f7c269acda8b2 100644 --- a/libcxx/docs/ReleaseNotes/18.rst +++ b/libcxx/docs/ReleaseNotes/18.rst @@ -330,13 +330,14 @@ ABI Affecting Changes - LLVM 18.1.8 Fixed an issue that caused ``std::string`` to pass an incorrect size to ``allocator_traits::deallocate`` when deallocating memory. The impact is different depending on a few factors: - - Users who don't use a custom allocator in ``std::string`` and don't enable sized deallocation (which is - off by default in Clang 18) will not be affected. This is expected to be the vast majority of users. - - Users who don't use a custom allocator in ``std::string`` but are enabling sized deallocation (e.g. with - ``-fsized-deallocation``) will notice that ``operator delete(void*, size_t)`` is now being passed the correct - size. This likely has no impact if they were not customizing ``operator delete``. - - Users who use a custom allocator in ``std::string`` will notice that they now get passed the correct allocation - size upon deallocation. + + - Users who don't use a custom allocator in ``std::string`` and don't enable sized deallocation (which is + off by default in Clang 18) will not be affected. This is expected to be the vast majority of users. + - Users who don't use a custom allocator in ``std::string`` but are enabling sized deallocation (e.g. with + ``-fsized-deallocation``) will notice that ``operator delete(void*, size_t)`` is now being passed the correct + size. This likely has no impact if they were not customizing ``operator delete``. + - Users who use a custom allocator in ``std::string`` will notice that they now get passed the correct allocation + size upon deallocation. Build System Changes --------------------