Module: wine Branch: master Commit: 29f547d2ce03b4ffcccc2e4405d337a6d44cd3e8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=29f547d2ce03b4ffcccc2e4405...
Author: Piotr Caban piotr@codeweavers.com Date: Wed Mar 16 21:01:55 2016 +0100
msvcr80: Add _FindAndUnlinkFrame implementation.
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
.../api-ms-win-crt-private-l1-1-0.spec | 2 +- dlls/msvcr100/msvcr100.spec | 2 +- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr120/msvcr120.spec | 2 +- dlls/msvcr120_app/msvcr120_app.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/except.c | 28 ++++++++++++++++++++++ dlls/ucrtbase/ucrtbase.spec | 2 +- dlls/vcruntime140/vcruntime140.spec | 2 +- 10 files changed, 37 insertions(+), 9 deletions(-)
diff --git a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec index 619425f..f26b932 100644 --- a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec +++ b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec @@ -1,7 +1,7 @@ @ cdecl _CreateFrameInfo(ptr ptr) ucrtbase._CreateFrameInfo @ stdcall _CxxThrowException(long long) ucrtbase._CxxThrowException @ cdecl -arch=i386 -norelay _EH_prolog() ucrtbase._EH_prolog -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) ucrtbase._FindAndUnlinkFrame @ stub _GetImageBase @ stub _GetThrowImageBase @ cdecl -arch=i386,x86_64,arm _IsExceptionObjectToBeDestroyed(ptr) ucrtbase._IsExceptionObjectToBeDestroyed diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 7d6886a..33473b8 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -525,7 +525,7 @@ @ cdecl _CreateFrameInfo(ptr ptr) @ stdcall _CxxThrowException(long long) @ cdecl -arch=i386 -norelay _EH_prolog() -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) @ cdecl _Getdays() @ cdecl _Getmonths() @ cdecl _Gettnames() diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 73b84e7..6299a4f 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -846,7 +846,7 @@ @ stdcall _CxxThrowException(long long) @ cdecl -arch=i386 -norelay _EH_prolog() @ stub -arch=arm _FPE_Raise -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) @ stub -arch=win64 _GetImageBase @ stub -arch=win64 _GetThrowImageBase @ cdecl _Getdays() diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 7b274c9..bb1ae34 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -830,7 +830,7 @@ @ cdecl -arch=i386 -norelay _EH_prolog() @ stub -arch=arm _FPE_Raise @ stub _FCbuild -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) @ stub -arch=win64 _GetImageBase @ stub -arch=win64 _GetThrowImageBase @ cdecl _Getdays() diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index dffe875..694230f 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -824,7 +824,7 @@ @ cdecl -arch=i386 -norelay _EH_prolog() msvcr120._EH_prolog @ stub -arch=arm _FPE_Raise @ stub _FCbuild -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) msvcr120._FindAndUnlinkFrame @ stub -arch=win64 _GetImageBase @ stub -arch=win64 _GetThrowImageBase @ cdecl _Getdays() msvcr120._Getdays diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 1035b62..ccf7357 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -155,7 +155,7 @@ @ cdecl _CreateFrameInfo(ptr ptr) @ stdcall _CxxThrowException(long long) @ cdecl -arch=i386 -norelay _EH_prolog() -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) @ stub -arch=win64 _GetImageBase @ stub -arch=win64 _GetThrowImageBase @ cdecl _Getdays() diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index cac6775..43de82a 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -152,7 +152,7 @@ @ cdecl _CreateFrameInfo(ptr ptr) @ stdcall _CxxThrowException(long long) @ cdecl -arch=i386 -norelay _EH_prolog() -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) @ cdecl _Getdays() @ cdecl _Getmonths() @ cdecl _Gettnames() diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c index a204d62..ec923b1 100644 --- a/dlls/msvcrt/except.c +++ b/dlls/msvcrt/except.c @@ -341,3 +341,31 @@ frame_info* CDECL _CreateFrameInfo(frame_info *fi, void *obj) fi->object = obj; return fi; } + +/********************************************************************* + * _FindAndUnlinkFrame (MSVCR80.@) + */ +void CDECL _FindAndUnlinkFrame(frame_info *fi) +{ + thread_data_t *data = msvcrt_get_thread_data(); + frame_info *cur = data->frame_info_head; + + TRACE("(%p)\n", fi); + + if (cur == fi) + { + data->frame_info_head = cur->next; + return; + } + + for (; cur->next; cur = cur->next) + { + if (cur->next == fi) + { + cur->next = fi->next; + return; + } + } + + ERR("frame not found, native crashes in this case\n"); +} diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index df7c02e..44b62a7 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -24,7 +24,7 @@ @ stub _FCbuild @ stub _FCmulcc @ stub _FCmulcr -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) @ stub _GetImageBase @ stub _GetThrowImageBase @ cdecl _Getdays() diff --git a/dlls/vcruntime140/vcruntime140.spec b/dlls/vcruntime140/vcruntime140.spec index c5e0c4f..ea58694 100644 --- a/dlls/vcruntime140/vcruntime140.spec +++ b/dlls/vcruntime140/vcruntime140.spec @@ -1,7 +1,7 @@ @ cdecl _CreateFrameInfo(ptr ptr) ucrtbase._CreateFrameInfo @ stdcall _CxxThrowException(long long) ucrtbase._CxxThrowException @ cdecl -arch=i386 -norelay _EH_prolog() ucrtbase._EH_prolog -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) ucrtbase._FindAndUnlinkFrame @ cdecl -arch=i386,x86_64,arm _IsExceptionObjectToBeDestroyed(ptr) ucrtbase._IsExceptionObjectToBeDestroyed @ stub _NLG_Dispatch2 @ stub _NLG_Return