diff options
| author | Dimitry Andric <dimitry@andric.com> | 2026-01-05 20:31:45 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2026-04-25 14:14:21 +0000 |
| commit | 987ac31018cba9f1763ad3acfb68b933f58a4c52 (patch) | |
| tree | d5b025f39e8099d7cbd4f1922d2257bbe0fbe999 | |
| parent | 5465db314a03c11b15e00f22be1609027dfc152c (diff) | |
libcxx-compat: fix llvmorg-21-init-18351-gfcc09b6f0267:
[libc++] Fix std::make_exception_ptr interaction with ObjC (#135386)
Clang treats throwing/catching ObjC types differently from C++ types,
and omitting the `throw` in `std::make_exception_ptr` breaks ObjC
invariants about how types are thrown/caught.
Fixes #135089
Co-authored-by: Louis Dionne <ldionne.2@gmail.com>
Only use lambdas when in !defined(_LIBCPP_CXX03_LANG), so this will
compile with clang 18 and lower, in C++03 mode and earlier.
PR: 292067
MFC after: 1 month
| -rw-r--r-- | contrib/llvm-project/libcxx/include/__exception/exception_ptr.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/contrib/llvm-project/libcxx/include/__exception/exception_ptr.h b/contrib/llvm-project/libcxx/include/__exception/exception_ptr.h index 796fa924be12..130e90621709 100644 --- a/contrib/llvm-project/libcxx/include/__exception/exception_ptr.h +++ b/contrib/llvm-project/libcxx/include/__exception/exception_ptr.h @@ -93,7 +93,7 @@ public: }; # if _LIBCPP_HAS_EXCEPTIONS -# if _LIBCPP_AVAILABILITY_HAS_INIT_PRIMARY_EXCEPTION +# if _LIBCPP_AVAILABILITY_HAS_INIT_PRIMARY_EXCEPTION && !defined(_LIBCPP_CXX03_LANG) template <class _Ep> _LIBCPP_HIDE_FROM_ABI exception_ptr __make_exception_ptr_explicit(_Ep& __e) _NOEXCEPT { using _Ep2 = __decay_t<_Ep>; |
