{
if (BIGNUM_ZERO_P (denominator))
{
- divide_by_zero_error(NULL);
+ divide_by_zero_error();
return;
}
if (BIGNUM_ZERO_P (numerator))
{
if (BIGNUM_ZERO_P (denominator))
{
- divide_by_zero_error(NULL);
+ divide_by_zero_error();
return (BIGNUM_OUT_OF_BAND);
}
if (BIGNUM_ZERO_P (numerator))
{
if (BIGNUM_ZERO_P (denominator))
{
- divide_by_zero_error(NULL);
+ divide_by_zero_error();
return (BIGNUM_OUT_OF_BAND);
}
if (BIGNUM_ZERO_P (numerator))
general_error(ERROR_SIGNAL,tag_fixnum(signal),F,native_stack);
}
-void divide_by_zero_error(F_STACK_FRAME *native_stack)
+void divide_by_zero_error(void)
{
- general_error(ERROR_DIVIDE_BY_ZERO,F,F,native_stack);
+ general_error(ERROR_DIVIDE_BY_ZERO,F,F,NULL);
}
void memory_signal_handler_impl(void)
memory_protection_error(signal_fault_addr,signal_callstack_top);
}
-void divide_by_zero_signal_handler_impl(void)
-{
- divide_by_zero_error(signal_callstack_top);
-}
-
void misc_signal_handler_impl(void)
{
signal_error(signal_number,signal_callstack_top);
void throw_error(CELL error, F_STACK_FRAME *native_stack);
void general_error(F_ERRORTYPE error, CELL arg1, CELL arg2, F_STACK_FRAME *native_stack);
-void divide_by_zero_error(F_STACK_FRAME *native_stack);
+void divide_by_zero_error(void);
void memory_protection_error(CELL addr, F_STACK_FRAME *native_stack);
void signal_error(int signal, F_STACK_FRAME *native_stack);
void type_error(CELL type, CELL tagged);
void *signal_callstack_top;
void memory_signal_handler_impl(void);
-void divide_by_zero_signal_handler_impl(void);
void misc_signal_handler_impl(void);
void primitive_unimplemented(void);
signal_fault_addr = e->ExceptionInformation[1];
c->EIP = (CELL)memory_signal_handler_impl;
}
- else if(e->ExceptionCode == EXCEPTION_FLT_DIVIDE_BY_ZERO
- || e->ExceptionCode == EXCEPTION_INT_DIVIDE_BY_ZERO)
- {
- signal_number = ERROR_DIVIDE_BY_ZERO;
- c->EIP = (CELL)divide_by_zero_signal_handler_impl;
- }
/* If the Widcomm bluetooth stack is installed, the BTTray.exe process
injects code into running programs. For some reason this results in
random SEH exceptions with this (undocumented) exception code being
this exception means. */
else if(e->ExceptionCode != 0x40010006)
{
- signal_number = 11;
+ signal_number = e->ExceptionCode;
c->EIP = (CELL)misc_signal_handler_impl;
}