Changeset 9807


Ignore:
Timestamp:
Jun 21, 2008, 9:33:36 PM (11 years ago)
Author:
gb
Message:

In windows_arbstack_exception_handler(), pass exceptions that don't
have the #x80000000 bit set to next handler.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/win64/lisp-kernel/x86-exceptions.c

    r9664 r9807  
    15841584windows_arbstack_exception_handler(EXCEPTION_POINTERS *exception_pointers)
    15851585{
    1586   TCR *tcr = get_interrupt_tcr(false);
    1587   area *vs = tcr->vs_area;
    1588   BytePtr current_sp = (BytePtr) current_stack_pointer();
    1589 
    1590   if ((current_sp >= vs->low) &&
    1591       (current_sp < vs->high)) {
    1592     return
    1593       handle_windows_exception_on_foreign_stack(tcr,
    1594                                                 exception_pointers->ContextRecord,
    1595                                                 windows_exception_handler,
    1596                                                 exception_pointers);
    1597   }
    1598   return windows_exception_handler(exception_pointers);
     1586  DWORD code = exception_pointers->ExceptionRecord->ExceptionCode;
     1587 
     1588  if ((code & 0x80000000L) == 0) {
     1589    return EXCEPTION_CONTINUE_SEARCH;
     1590  } else {
     1591    TCR *tcr = get_interrupt_tcr(false);
     1592    area *vs = tcr->vs_area;
     1593    BytePtr current_sp = (BytePtr) current_stack_pointer();
     1594   
     1595    if ((current_sp >= vs->low) &&
     1596        (current_sp < vs->high)) {
     1597      return
     1598        handle_windows_exception_on_foreign_stack(tcr,
     1599                                                  exception_pointers->ContextRecord,
     1600                                                  windows_exception_handler,
     1601                                                  exception_pointers);
     1602    }
     1603    return windows_exception_handler(exception_pointers);
     1604  }
    15991605}
    16001606
Note: See TracChangeset for help on using the changeset viewer.