From fcedfddf00b3f994e4f4e40332ac7fc192c63244 Mon Sep 17 00:00:00 2001 From: polwex Date: Sun, 5 Oct 2025 21:56:51 +0700 Subject: claude is gud --- vere/pkg/noun/platform/windows/veh_handler.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 vere/pkg/noun/platform/windows/veh_handler.c (limited to 'vere/pkg/noun/platform/windows/veh_handler.c') diff --git a/vere/pkg/noun/platform/windows/veh_handler.c b/vere/pkg/noun/platform/windows/veh_handler.c new file mode 100644 index 0000000..d2a035c --- /dev/null +++ b/vere/pkg/noun/platform/windows/veh_handler.c @@ -0,0 +1,26 @@ +#include "noun.h" +#include "rsignal.h" + +c3_i +u3m_fault(void* adr_v, c3_i ser_i); + +/* _windows_exception_filter: replaces libsigsegv on windows + using vectored exception handling + */ +LONG WINAPI +_windows_exception_filter(struct _EXCEPTION_POINTERS *ExceptionInfo) +{ + EXCEPTION_RECORD ExceptionRecord = *ExceptionInfo->ExceptionRecord; + if (ExceptionRecord.ExceptionCode == EXCEPTION_ACCESS_VIOLATION && + ExceptionRecord.ExceptionInformation[0] == 1 && + u3m_fault((void*)ExceptionRecord.ExceptionInformation[1], 1)) + { + return EXCEPTION_CONTINUE_EXECUTION; + } + + if (ExceptionRecord.ExceptionCode == EXCEPTION_STACK_OVERFLOW) { + rsignal_raise(SIGSTK); + } + + return EXCEPTION_CONTINUE_SEARCH; +} -- cgit v1.2.3