msvcrt: Implement _seh_longjmp_unwind4 for i386.
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index 4192ff6..2f76515 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -1066,7 +1066,7 @@
@ stub _scwprintf_p_l
@ cdecl _searchenv(str str ptr) msvcrt._searchenv
@ cdecl _searchenv_s(str str ptr long) msvcrt._searchenv_s
-@ stub _seh_longjmp_unwind4
+@ stdcall -i386 _seh_longjmp_unwind4(ptr) msvcrt._seh_longjmp_unwind4
@ stdcall -i386 _seh_longjmp_unwind(ptr) msvcrt._seh_longjmp_unwind
@ cdecl _set_SSE2_enable(long) msvcrt._set_SSE2_enable
@ cdecl _set_abort_behavior(long long) msvcrt._set_abort_behavior
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 2158734..86d93c8 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -918,7 +918,7 @@
@ stub _scwprintf_p_l
@ cdecl _searchenv(str str ptr) msvcrt._searchenv
@ cdecl _searchenv_s(str str ptr long) msvcrt._searchenv_s
-@ stub _seh_longjmp_unwind4
+@ stdcall -i386 _seh_longjmp_unwind4(ptr) msvcrt._seh_longjmp_unwind4
@ stdcall -i386 _seh_longjmp_unwind(ptr) msvcrt._seh_longjmp_unwind
@ cdecl _set_SSE2_enable(long) msvcrt._set_SSE2_enable
@ cdecl _set_abort_behavior(long long) msvcrt._set_abort_behavior
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index 1bb525d..9749a63 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -904,7 +904,7 @@
@ stub _scwprintf_p_l
@ cdecl _searchenv(str str ptr) msvcrt._searchenv
@ cdecl _searchenv_s(str str ptr long) msvcrt._searchenv_s
-@ stub _seh_longjmp_unwind4
+@ stdcall -i386 _seh_longjmp_unwind4(ptr) msvcrt._seh_longjmp_unwind4
@ stdcall -i386 _seh_longjmp_unwind(ptr) msvcrt._seh_longjmp_unwind
@ cdecl _set_SSE2_enable(long) msvcrt._set_SSE2_enable
@ cdecl _set_abort_behavior(long long) msvcrt._set_abort_behavior
diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c
index 422e3fa..eb20903 100644
--- a/dlls/msvcrt/except.c
+++ b/dlls/msvcrt/except.c
@@ -519,6 +519,15 @@
msvcrt_local_unwind2( (MSVCRT_EXCEPTION_FRAME *)jmp->Registration, jmp->TryLevel, (void *)jmp->Ebp );
}
+/*********************************************************************
+ * _seh_longjmp_unwind4 (MSVCRT.@)
+ */
+void __stdcall _seh_longjmp_unwind4(struct MSVCRT___JUMP_BUFFER *jmp)
+{
+ msvcrt_local_unwind4( (void *)jmp->Cookie, (MSVCRT_EXCEPTION_FRAME *)jmp->Registration,
+ jmp->TryLevel, (void *)jmp->Ebp );
+}
+
#elif defined(__x86_64__)
/*******************************************************************
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 5d065fb..3534c1e 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -859,7 +859,7 @@
# stub _scwprintf_p_l(wstr ptr)
@ cdecl _searchenv(str str ptr)
@ cdecl _searchenv_s(str str ptr long)
-# stub _seh_longjmp_unwind4
+@ stdcall -i386 _seh_longjmp_unwind4(ptr)
@ stdcall -i386 _seh_longjmp_unwind(ptr)
@ cdecl _set_SSE2_enable(long) MSVCRT__set_SSE2_enable
@ cdecl _set_controlfp(long long)
diff --git a/dlls/msvcrtd/msvcrtd.spec b/dlls/msvcrtd/msvcrtd.spec
index e4372e9..08119a7 100644
--- a/dlls/msvcrtd/msvcrtd.spec
+++ b/dlls/msvcrtd/msvcrtd.spec
@@ -485,6 +485,7 @@
@ cdecl -arch=i386 _safe_fprem1() msvcrt._safe_fprem1
@ cdecl _scalb(double long) msvcrt._scalb
@ cdecl _searchenv(str str ptr) msvcrt._searchenv
+@ stdcall -i386 _seh_longjmp_unwind4(ptr) msvcrt._seh_longjmp_unwind4
@ stdcall -i386 _seh_longjmp_unwind(ptr) msvcrt._seh_longjmp_unwind
@ cdecl _set_error_mode(long) msvcrt._set_error_mode
@ cdecl _set_sbh_threshold(long) msvcrt._set_sbh_threshold