From: Paul Gofman <pgofman(a)codeweavers.com> --- dlls/msvcp140/msvcp140.spec | 4 ++-- dlls/msvcp90/exception.c | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/dlls/msvcp140/msvcp140.spec b/dlls/msvcp140/msvcp140.spec index 241dd4eed2c..388dfbaf38c 100644 --- a/dlls/msvcp140/msvcp140.spec +++ b/dlls/msvcp140/msvcp140.spec @@ -1689,8 +1689,8 @@ @ stub ?_Xregex_error(a)std@@YAXW4error_type(a)regex_constants@1@@Z @ cdecl -arch=win32 ?_Xruntime_error(a)std@@YAXPBD(a)Z(str) _Xruntime_error @ cdecl -arch=win64 ?_Xruntime_error(a)std@@YAXPEBD(a)Z(str) _Xruntime_error -@ cdecl -arch=win32 ?__ExceptionPtrAssign@@YAXPAXPBX(a)Z(ptr ptr) msvcr120.?__ExceptionPtrAssign@@YAXPAXPBX(a)Z -@ cdecl -arch=win64 ?__ExceptionPtrAssign@@YAXPEAXPEBX(a)Z(ptr ptr) msvcr120.?__ExceptionPtrAssign@@YAXPEAXPEBX(a)Z +@ cdecl -arch=win32 ?__ExceptionPtrAssign@@YAXPAXPBX(a)Z(ptr ptr) __ExceptionPtrAssign +@ cdecl -arch=win64 ?__ExceptionPtrAssign@@YAXPEAXPEBX(a)Z(ptr ptr) __ExceptionPtrAssign @ cdecl -arch=win32 ?__ExceptionPtrCompare@@YA_NPBX0(a)Z(ptr ptr) msvcr120.?__ExceptionPtrCompare@@YA_NPBX0(a)Z @ cdecl -arch=win64 ?__ExceptionPtrCompare@@YA_NPEBX0(a)Z(ptr ptr) msvcr120.?__ExceptionPtrCompare@@YA_NPEBX0(a)Z @ cdecl -arch=win32 ?__ExceptionPtrCopy@@YAXPAXPBX(a)Z(ptr ptr) __ExceptionPtrCopy diff --git a/dlls/msvcp90/exception.c b/dlls/msvcp90/exception.c index 89465d7578d..fb605dedcae 100644 --- a/dlls/msvcp90/exception.c +++ b/dlls/msvcp90/exception.c @@ -1028,6 +1028,22 @@ void __cdecl __ExceptionPtrCopy(exception_ptr *ep, const exception_ptr *copy) InterlockedIncrement(copy->ref); } +/********************************************************************* + * ?__ExceptionPtrAssign@@YAXPAXPBX(a)Z + * ?__ExceptionPtrAssign@@YAXPEAXPEBX(a)Z + */ +void __cdecl __ExceptionPtrAssign(exception_ptr *ep, const exception_ptr *assign) +{ + TRACE("(%p %p)\n", ep, assign); + + /* don't destroy object stored in ep */ + if (ep->ref) + InterlockedDecrement(ep->ref); + + *ep = *assign; + if (ep->ref) + InterlockedIncrement(ep->ref); +} #endif #if _MSVCP_VER >= 70 || defined(_MSVCIRT) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/1034