[PATCH 2/3] [Msvcrt]: implemented the raise function
Eric Pouech
eric.pouech at wanadoo.fr
Tue Jan 2 07:31:08 CST 2007
Should fix #6320
A+
---
dlls/msvcrt/except.c | 35 +++++++++++++++++++++++++++++++++++
dlls/msvcrt/msvcrt.spec | 2 +-
2 files changed, 36 insertions(+), 1 deletions(-)
diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c
index 8625cea..f534e91 100644
--- a/dlls/msvcrt/except.c
+++ b/dlls/msvcrt/except.c
@@ -537,6 +537,41 @@ MSVCRT___sighandler_t CDECL MSVCRT_signa
}
/*********************************************************************
+ * raise (MSVCRT.@)
+ */
+int CDECL MSVCRT_raise(int sig)
+{
+ MSVCRT___sighandler_t handler;
+
+ TRACE("(%d)\n", sig);
+
+ switch (sig)
+ {
+ case MSVCRT_SIGABRT:
+ case MSVCRT_SIGFPE:
+ case MSVCRT_SIGILL:
+ case MSVCRT_SIGSEGV:
+ case MSVCRT_SIGINT:
+ case MSVCRT_SIGTERM:
+ if ((handler = sighandlers[sig]) != MSVCRT_SIG_DFL)
+ {
+ sighandlers[sig] = MSVCRT_SIG_DFL;
+ if (handler != MSVCRT_SIG_IGN)
+ {
+ if (sig == MSVCRT_SIGFPE)
+ ((float_handler)handler)(sig, _FPE_EXPLICITGEN);
+ else
+ handler(sig);
+ }
+ } else MSVCRT__exit(3);
+ break;
+ default:
+ return -1;
+ }
+ return 0;
+}
+
+/*********************************************************************
* _XcptFilter (MSVCRT.@)
*/
int CDECL _XcptFilter(NTSTATUS ex, PEXCEPTION_POINTERS ptr)
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 165ad42..792be32 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -685,7 +685,7 @@ # extern _pwctype
@ cdecl putwc(long ptr) MSVCRT_fputwc
@ cdecl putwchar(long) _fputwchar
@ cdecl qsort(ptr long long ptr) ntdll.qsort
-@ stub raise #(long)
+@ cdecl raise(long) MSVCRT_raise
@ cdecl rand() MSVCRT_rand
@ cdecl realloc(ptr long) MSVCRT_realloc
@ cdecl remove(str) MSVCRT_remove
More information about the wine-patches
mailing list