> The big question is how to fix this on Win32. Is a test in the
integer
> division routines enough? Is there a signal to catch on Win32?
After fighting with the docs a little bit, here is how to handle an
int/0 in a C application.
#include "stdio.h"
#include "excpt.h"
#include "windows.h"
int HandleException( int iExcept );
int main(int argc, char* argv[])
{
int b = 0;
int a;
puts("hello");
__try
{
puts("in try");
a = 0/b;
}
__except( HandleException(GetExceptionCode()) )
{
puts("in except");
}
puts("world");
}
int HandleException( int iExcept )
{
if (iExcept == EXCEPTION_INT_DIVIDE_BY_ZERO)
{
puts("Handled int/0 exception");
return EXCEPTION_EXECUTE_HANDLER;
}
/* call the system handler and crash */
return EXCEPTION_CONTINUE_SEARCH ;
}
Merlin
---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster