msvcr80: Add _CreateFrameInfo implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
f08896aa73
commit
0204517401
|
@ -1,4 +1,4 @@
|
||||||
@ stub _CreateFrameInfo
|
@ cdecl _CreateFrameInfo(ptr ptr) ucrtbase._CreateFrameInfo
|
||||||
@ stdcall _CxxThrowException(long long) ucrtbase._CxxThrowException
|
@ stdcall _CxxThrowException(long long) ucrtbase._CxxThrowException
|
||||||
@ cdecl -arch=i386 -norelay _EH_prolog() ucrtbase._EH_prolog
|
@ cdecl -arch=i386 -norelay _EH_prolog() ucrtbase._EH_prolog
|
||||||
@ stub _FindAndUnlinkFrame
|
@ stub _FindAndUnlinkFrame
|
||||||
|
|
|
@ -522,7 +522,7 @@
|
||||||
@ cdecl -arch=i386 _CItanh()
|
@ cdecl -arch=i386 _CItanh()
|
||||||
@ cdecl _CRT_RTC_INIT(ptr ptr long long long)
|
@ cdecl _CRT_RTC_INIT(ptr ptr long long long)
|
||||||
@ cdecl _CRT_RTC_INITW(ptr ptr long long long)
|
@ cdecl _CRT_RTC_INITW(ptr ptr long long long)
|
||||||
@ stub _CreateFrameInfo
|
@ cdecl _CreateFrameInfo(ptr ptr)
|
||||||
@ stdcall _CxxThrowException(long long)
|
@ stdcall _CxxThrowException(long long)
|
||||||
@ cdecl -arch=i386 -norelay _EH_prolog()
|
@ cdecl -arch=i386 -norelay _EH_prolog()
|
||||||
@ stub _FindAndUnlinkFrame
|
@ stub _FindAndUnlinkFrame
|
||||||
|
|
|
@ -842,7 +842,7 @@
|
||||||
@ cdecl -arch=i386 _CItanh()
|
@ cdecl -arch=i386 _CItanh()
|
||||||
@ cdecl _CRT_RTC_INIT(ptr ptr long long long)
|
@ cdecl _CRT_RTC_INIT(ptr ptr long long long)
|
||||||
@ cdecl _CRT_RTC_INITW(ptr ptr long long long)
|
@ cdecl _CRT_RTC_INITW(ptr ptr long long long)
|
||||||
@ stub _CreateFrameInfo
|
@ cdecl _CreateFrameInfo(ptr ptr)
|
||||||
@ stdcall _CxxThrowException(long long)
|
@ stdcall _CxxThrowException(long long)
|
||||||
@ cdecl -arch=i386 -norelay _EH_prolog()
|
@ cdecl -arch=i386 -norelay _EH_prolog()
|
||||||
@ stub -arch=arm _FPE_Raise
|
@ stub -arch=arm _FPE_Raise
|
||||||
|
|
|
@ -825,7 +825,7 @@
|
||||||
@ cdecl _CRT_RTC_INIT(ptr ptr long long long)
|
@ cdecl _CRT_RTC_INIT(ptr ptr long long long)
|
||||||
@ cdecl _CRT_RTC_INITW(ptr ptr long long long)
|
@ cdecl _CRT_RTC_INITW(ptr ptr long long long)
|
||||||
@ stub _Cbuild
|
@ stub _Cbuild
|
||||||
@ stub _CreateFrameInfo
|
@ cdecl _CreateFrameInfo(ptr ptr)
|
||||||
@ stdcall _CxxThrowException(long long)
|
@ stdcall _CxxThrowException(long long)
|
||||||
@ cdecl -arch=i386 -norelay _EH_prolog()
|
@ cdecl -arch=i386 -norelay _EH_prolog()
|
||||||
@ stub -arch=arm _FPE_Raise
|
@ stub -arch=arm _FPE_Raise
|
||||||
|
|
|
@ -819,7 +819,7 @@
|
||||||
@ cdecl -arch=i386 _CItan() msvcr120._CItan
|
@ cdecl -arch=i386 _CItan() msvcr120._CItan
|
||||||
@ cdecl -arch=i386 _CItanh() msvcr120._CItanh
|
@ cdecl -arch=i386 _CItanh() msvcr120._CItanh
|
||||||
@ stub _Cbuild
|
@ stub _Cbuild
|
||||||
@ stub _CreateFrameInfo
|
@ cdecl _CreateFrameInfo(ptr ptr) msvcr120._CreateFrameInfo
|
||||||
@ stdcall _CxxThrowException(long long) msvcr120._CxxThrowException
|
@ stdcall _CxxThrowException(long long) msvcr120._CxxThrowException
|
||||||
@ cdecl -arch=i386 -norelay _EH_prolog() msvcr120._EH_prolog
|
@ cdecl -arch=i386 -norelay _EH_prolog() msvcr120._EH_prolog
|
||||||
@ stub -arch=arm _FPE_Raise
|
@ stub -arch=arm _FPE_Raise
|
||||||
|
|
|
@ -152,7 +152,7 @@
|
||||||
@ cdecl -arch=i386 _CItanh()
|
@ cdecl -arch=i386 _CItanh()
|
||||||
@ cdecl _CRT_RTC_INIT(ptr ptr long long long)
|
@ cdecl _CRT_RTC_INIT(ptr ptr long long long)
|
||||||
@ cdecl _CRT_RTC_INITW(ptr ptr long long long)
|
@ cdecl _CRT_RTC_INITW(ptr ptr long long long)
|
||||||
@ stub _CreateFrameInfo
|
@ cdecl _CreateFrameInfo(ptr ptr)
|
||||||
@ stdcall _CxxThrowException(long long)
|
@ stdcall _CxxThrowException(long long)
|
||||||
@ cdecl -arch=i386 -norelay _EH_prolog()
|
@ cdecl -arch=i386 -norelay _EH_prolog()
|
||||||
@ stub _FindAndUnlinkFrame
|
@ stub _FindAndUnlinkFrame
|
||||||
|
|
|
@ -149,7 +149,7 @@
|
||||||
@ cdecl -arch=i386 _CItanh()
|
@ cdecl -arch=i386 _CItanh()
|
||||||
@ cdecl _CRT_RTC_INIT(ptr ptr long long long)
|
@ cdecl _CRT_RTC_INIT(ptr ptr long long long)
|
||||||
@ cdecl _CRT_RTC_INITW(ptr ptr long long long)
|
@ cdecl _CRT_RTC_INITW(ptr ptr long long long)
|
||||||
@ stub _CreateFrameInfo
|
@ cdecl _CreateFrameInfo(ptr ptr)
|
||||||
@ stdcall _CxxThrowException(long long)
|
@ stdcall _CxxThrowException(long long)
|
||||||
@ cdecl -arch=i386 -norelay _EH_prolog()
|
@ cdecl -arch=i386 -norelay _EH_prolog()
|
||||||
@ stub _FindAndUnlinkFrame
|
@ stub _FindAndUnlinkFrame
|
||||||
|
|
|
@ -326,3 +326,18 @@ LPTOP_LEVEL_EXCEPTION_FILTER CDECL MSVCR110__crtSetUnhandledExceptionFilter(LPTO
|
||||||
{
|
{
|
||||||
return SetUnhandledExceptionFilter(filter);
|
return SetUnhandledExceptionFilter(filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
* _CreateFrameInfo (MSVCR80.@)
|
||||||
|
*/
|
||||||
|
frame_info* CDECL _CreateFrameInfo(frame_info *fi, void *obj)
|
||||||
|
{
|
||||||
|
thread_data_t *data = msvcrt_get_thread_data();
|
||||||
|
|
||||||
|
TRACE("(%p, %p)\n", fi, obj);
|
||||||
|
|
||||||
|
fi->next = data->frame_info_head;
|
||||||
|
data->frame_info_head = fi;
|
||||||
|
fi->object = obj;
|
||||||
|
return fi;
|
||||||
|
}
|
||||||
|
|
|
@ -414,6 +414,7 @@ static DWORD catch_function_nested_handler( EXCEPTION_RECORD *rec, EXCEPTION_REG
|
||||||
BOOL __cdecl _IsExceptionObjectToBeDestroyed(const void *obj)
|
BOOL __cdecl _IsExceptionObjectToBeDestroyed(const void *obj)
|
||||||
{
|
{
|
||||||
EXCEPTION_REGISTRATION_RECORD *reg = NtCurrentTeb()->Tib.ExceptionList;
|
EXCEPTION_REGISTRATION_RECORD *reg = NtCurrentTeb()->Tib.ExceptionList;
|
||||||
|
frame_info *cur;
|
||||||
|
|
||||||
TRACE( "%p\n", obj );
|
TRACE( "%p\n", obj );
|
||||||
|
|
||||||
|
@ -432,6 +433,12 @@ BOOL __cdecl _IsExceptionObjectToBeDestroyed(const void *obj)
|
||||||
reg = reg->Prev;
|
reg = reg->Prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (cur = msvcrt_get_thread_data()->frame_info_head; cur; cur = cur->next)
|
||||||
|
{
|
||||||
|
if (cur->object == obj)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -204,6 +204,11 @@ typedef struct MSVCRT_localeinfo_struct
|
||||||
MSVCRT_pthreadmbcinfo mbcinfo;
|
MSVCRT_pthreadmbcinfo mbcinfo;
|
||||||
} MSVCRT__locale_tstruct, *MSVCRT__locale_t;
|
} MSVCRT__locale_tstruct, *MSVCRT__locale_t;
|
||||||
|
|
||||||
|
typedef struct _frame_info
|
||||||
|
{
|
||||||
|
void *object;
|
||||||
|
struct _frame_info *next;
|
||||||
|
} frame_info;
|
||||||
|
|
||||||
/* TLS data */
|
/* TLS data */
|
||||||
extern DWORD msvcrt_tls_index DECLSPEC_HIDDEN;
|
extern DWORD msvcrt_tls_index DECLSPEC_HIDDEN;
|
||||||
|
@ -242,7 +247,8 @@ struct __thread_data {
|
||||||
void *unk6[3];
|
void *unk6[3];
|
||||||
int unk7;
|
int unk7;
|
||||||
EXCEPTION_RECORD *exc_record;
|
EXCEPTION_RECORD *exc_record;
|
||||||
void *unk8[7];
|
frame_info *frame_info_head;
|
||||||
|
void *unk8[6];
|
||||||
LCID cached_lcid;
|
LCID cached_lcid;
|
||||||
int unk9[3];
|
int unk9[3];
|
||||||
DWORD cached_cp;
|
DWORD cached_cp;
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
@ stub _Cbuild
|
@ stub _Cbuild
|
||||||
@ stub _Cmulcc
|
@ stub _Cmulcc
|
||||||
@ stub _Cmulcr
|
@ stub _Cmulcr
|
||||||
@ stub _CreateFrameInfo
|
@ cdecl _CreateFrameInfo(ptr ptr)
|
||||||
@ stdcall _CxxThrowException(long long)
|
@ stdcall _CxxThrowException(long long)
|
||||||
@ cdecl -arch=i386 -norelay _EH_prolog()
|
@ cdecl -arch=i386 -norelay _EH_prolog()
|
||||||
@ stub _Exit
|
@ stub _Exit
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
@ stub _CreateFrameInfo
|
@ cdecl _CreateFrameInfo(ptr ptr) ucrtbase._CreateFrameInfo
|
||||||
@ stdcall _CxxThrowException(long long) ucrtbase._CxxThrowException
|
@ stdcall _CxxThrowException(long long) ucrtbase._CxxThrowException
|
||||||
@ cdecl -arch=i386 -norelay _EH_prolog() ucrtbase._EH_prolog
|
@ cdecl -arch=i386 -norelay _EH_prolog() ucrtbase._EH_prolog
|
||||||
@ stub _FindAndUnlinkFrame
|
@ stub _FindAndUnlinkFrame
|
||||||
|
|
Loading…
Reference in New Issue