X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fwin32-os.c;h=0073c60d3f0fb6f9a0819d1cc6062bea3c35c336;hb=e0f344219fe6cd5329aae9fc343466bcd71d4edf;hp=8ec02db4e86877fcbffdca9ef2dd70e57aa8f83a;hpb=baa0eaf21221dc564088c37b228c620c298aeaa1;p=sbcl.git diff --git a/src/runtime/win32-os.c b/src/runtime/win32-os.c index 8ec02db..0073c60 100644 --- a/src/runtime/win32-os.c +++ b/src/runtime/win32-os.c @@ -414,7 +414,12 @@ EXCEPTION_DISPOSITION handle_exception(EXCEPTION_RECORD *exception_record, return sigtrap_emulator(context, exception_frame); } else if (exception_record->ExceptionCode == EXCEPTION_ACCESS_VIOLATION && - is_valid_lisp_addr(fault_address)) { + (is_valid_lisp_addr(fault_address) || + /* the linkage table does not contain valid lisp + * objects, but is also committed on-demand here + */ + in_range_p(fault_address, LINKAGE_TABLE_SPACE_START, + LINKAGE_TABLE_SPACE_END))) { /* Pick off GC-related memory fault next. */ MEMORY_BASIC_INFORMATION mem_info; @@ -634,6 +639,10 @@ void scratch(void) FlushConsoleInputBuffer(0); PeekConsoleInput(0, 0, 0, 0); Sleep(0); + GetACP(); + GetOEMCP(); + GetConsoleCP(); + GetConsoleOutputCP(); } char *