The following patch adds a Parrot_nosegfault() function
to win32.c; after it is called, a segmentation fault will print
"This process received a segmentation violation exception"
instead of popping up a dialog. I think it might be useful
for tinderbox clients.
Regards
Mattia
Index: platforms/win32.c
===================================================================
RCS file: /home/perlcvs/parrot/platforms/win32.c,v
retrieving revision 1.5
diff -u -2 -r1.5 win32.c
--- platforms/win32.c 14 Jan 2002 20:04:32 -0000 1.5
+++ platforms/win32.c 8 Feb 2002 18:15:16 -0000
@@ -7,4 +7,25 @@
#include "parrot/parrot.h"
+/*
+ * Parrot_nosegfault()
+ */
+
+LONG CALLBACK Parrot_win32_filter ( EXCEPTION_POINTERS* exceptionInfo )
+{
+ /* only trap segmentation violations */
+ if( exceptionInfo->ExceptionRecord->ExceptionCode ==
+ EXCEPTION_ACCESS_VIOLATION )
+ {
+ printf("This process received a segmentation violation exception\n");
+ exit(1);
+ }
+
+ return EXCEPTION_CONTINUE_SEARCH;
+}
+
+void Parrot_nosegfault ()
+{
+ SetUnhandledExceptionFilter( Parrot_win32_filter );
+}
/*
Index: platforms/win32.h
===================================================================
RCS file: /home/perlcvs/parrot/platforms/win32.h,v
retrieving revision 1.6
diff -u -2 -r1.6 win32.h
--- platforms/win32.h 29 Jan 2002 18:39:20 -0000 1.6
+++ platforms/win32.h 8 Feb 2002 18:15:16 -0000
@@ -26,5 +26,5 @@
FLOATVAL Parrot_floatval_time (void);
void Parrot_setenv(const char * name, const char * value);
-
+void Parrot_nosegfault();
/*