Module: wine Branch: master Commit: b561d0130529fbceabbcca3091945b3fbdd76705 URL: https://source.winehq.org/git/wine.git/?a=commit;h=b561d0130529fbceabbcca309...
Author: Piotr Caban piotr@codeweavers.com Date: Fri Aug 27 13:48:18 2021 +0200
msvcp90: Don't use throw_exception helper for invalid_argument exception.
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/msvcp90/cxx.h | 1 - dlls/msvcp90/exception.c | 14 +++++++------- dlls/msvcp90/msvcp90.h | 1 + dlls/msvcp90/string.c | 4 +--- 4 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/dlls/msvcp90/cxx.h b/dlls/msvcp90/cxx.h index 72e96133f8f..5bdebb605d6 100644 --- a/dlls/msvcp90/cxx.h +++ b/dlls/msvcp90/cxx.h @@ -320,7 +320,6 @@ typedef enum __exception_type { EXCEPTION_BAD_CAST, EXCEPTION_LOGIC_ERROR, EXCEPTION_OUT_OF_RANGE, - EXCEPTION_INVALID_ARGUMENT, EXCEPTION_RUNTIME_ERROR, EXCEPTION_FAILURE, EXCEPTION_RANGE_ERROR, diff --git a/dlls/msvcp90/exception.c b/dlls/msvcp90/exception.c index face3ea09b0..f635a80a90c 100644 --- a/dlls/msvcp90/exception.c +++ b/dlls/msvcp90/exception.c @@ -890,10 +890,15 @@ void __cdecl DECLSPEC_NORETURN _Xmem(void)
/* ?_Xinvalid_argument@std@@YAXPBD@Z */ /* ?_Xinvalid_argument@std@@YAXPEBD@Z */ -void __cdecl _Xinvalid_argument(const char *str) +void __cdecl DECLSPEC_NORETURN _Xinvalid_argument(const char *str) { + exception_name name = EXCEPTION_NAME(str); + invalid_argument e; + TRACE("(%s)\n", debugstr_a(str)); - throw_exception(EXCEPTION_INVALID_ARGUMENT, str); + + MSVCP_invalid_argument_ctor(&e, name); + _CxxThrowException(&e, &invalid_argument_cxx_type); }
/* ?_Xlength_error@std@@YAXPBD@Z */ @@ -1076,11 +1081,6 @@ void throw_exception(exception_type et, const char *str) MSVCP_out_of_range_ctor(&e, name); _CxxThrowException(&e, &out_of_range_cxx_type); } - case EXCEPTION_INVALID_ARGUMENT: { - invalid_argument e; - MSVCP_invalid_argument_ctor(&e, name); - _CxxThrowException(&e, &invalid_argument_cxx_type); - } case EXCEPTION_RUNTIME_ERROR: { runtime_error e; MSVCP_runtime_error_ctor(&e, name); diff --git a/dlls/msvcp90/msvcp90.h b/dlls/msvcp90/msvcp90.h index 410c406d86c..144bf4d3a9a 100644 --- a/dlls/msvcp90/msvcp90.h +++ b/dlls/msvcp90/msvcp90.h @@ -664,5 +664,6 @@ static inline int mbstowcs_wrapper( size_t *ret, wchar_t *wcs, size_t size, cons #endif
void WINAPI DECLSPEC_NORETURN _CxxThrowException(void*,const cxx_exception_type*); +void __cdecl DECLSPEC_NORETURN _Xinvalid_argument(const char*); void __cdecl DECLSPEC_NORETURN _Xlength_error(const char*); void __cdecl DECLSPEC_NORETURN _Xmem(void); diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c index 89aacdd7cb7..7609f913093 100644 --- a/dlls/msvcp90/string.c +++ b/dlls/msvcp90/string.c @@ -484,10 +484,8 @@ void __thiscall _String_base__Xran(const void/*_String_base*/ *this) /* ?_Xinvarg@_String_base@std@@SAXXZ */ void CDECL MSVCP__String_base_Xinvarg(void) { - static const char msg[] = "invalid string argument"; - TRACE("\n"); - throw_exception(EXCEPTION_INVALID_ARGUMENT, msg); + _Xinvalid_argument("invalid string argument"); }