From d2f4f4b35d45adcd418773c952e652447ecf31ad Mon Sep 17 00:00:00 2001 From: trcrsired Date: Mon, 5 Aug 2024 15:21:43 -0400 Subject: [PATCH] add correct asan support libc++'s string --- include/fast_io_unit/string_impl/libc++.h | 8 ++++++++ include/fast_io_unit/string_impl/ostring_ref.h | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/fast_io_unit/string_impl/libc++.h b/include/fast_io_unit/string_impl/libc++.h index 1b35a0968..cb1f7f81f 100644 --- a/include/fast_io_unit/string_impl/libc++.h +++ b/include/fast_io_unit/string_impl/libc++.h @@ -124,6 +124,14 @@ inline void set_size(::std::basic_string &str, decltype(auto) __r_{hack_rep(str)}; if (bool(__r_.__s.__is_long_)) { +#if !defined(_LIBCPP_HAS_NO_ASAN) && defined(_LIBCPP_INSTRUMENTED_WITH_ASAN) + if (!::std::__libcpp_is_constant_evaluated()) + { + auto dataptr{str.data()}; + auto edptr{dataptr + __r_.__l.__size_}; + ::std::__annotate_contiguous_container(dataptr, dataptr + str.capacity(), dataptr + s + 1, edptr + 1); + } +#endif __r_.__l.__size_ = s; } else diff --git a/include/fast_io_unit/string_impl/ostring_ref.h b/include/fast_io_unit/string_impl/ostring_ref.h index b8dbca05b..31cb833e4 100644 --- a/include/fast_io_unit/string_impl/ostring_ref.h +++ b/include/fast_io_unit/string_impl/ostring_ref.h @@ -111,8 +111,8 @@ strlike_set_curr(io_strlike_type_t