From 8f72b9b3d0a42f582302d6ce49e78bf96301f11d Mon Sep 17 00:00:00 2001 From: Hari Limaye Date: Tue, 30 Dec 2025 11:20:17 +0000 Subject: [PATCH] Fix no match handling when calling {,w}memchr on ARM64EC --- stl/src/vector_algorithms.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stl/src/vector_algorithms.cpp b/stl/src/vector_algorithms.cpp index cb8bbbdbca0..d054b46fdfe 100644 --- a/stl/src/vector_algorithms.cpp +++ b/stl/src/vector_algorithms.cpp @@ -3730,7 +3730,8 @@ const void* __stdcall __std_find_trivial_unsized_8(const void* const _First, con const void* __stdcall __std_find_trivial_1( const void* const _First, const void* const _Last, const uint8_t _Val) noexcept { #ifdef _M_ARM64EC - return memchr(_First, _Val, _Byte_length(_First, _Last)); + auto _Result = memchr(_First, _Val, _Byte_length(_First, _Last)); + return _Result ? _Result : _Last; #else return _Finding::_Find_impl<_Finding::_Find_traits_1, _Finding::_Predicate::_Equal>(_First, _Last, _Val); #endif @@ -3739,7 +3740,8 @@ const void* __stdcall __std_find_trivial_1( const void* __stdcall __std_find_trivial_2( const void* const _First, const void* const _Last, const uint16_t _Val) noexcept { #ifdef _M_ARM64EC - return wmemchr(static_cast(_First), _Val, _Byte_length(_First, _Last) / sizeof(wchar_t)); + auto _Result = wmemchr(static_cast(_First), _Val, _Byte_length(_First, _Last) / sizeof(wchar_t)); + return _Result ? _Result : _Last; #else return _Finding::_Find_impl<_Finding::_Find_traits_2, _Finding::_Predicate::_Equal>(_First, _Last, _Val); #endif