diff options
author | Jason Molenda <jmolenda@apple.com> | 1999-11-09 01:28:43 +0000 |
---|---|---|
committer | Jason Molenda <jmolenda@apple.com> | 1999-11-09 01:28:43 +0000 |
commit | eceff73081bb2d5ebd624f6e2b775e93c4c7b298 (patch) | |
tree | ee2bc71d61f78dbfdf494640cfb678822e101cef /tcl/win/tclWinMtherr.c | |
parent | 69a7b5f79888513741e65a54216d7756474b76c2 (diff) | |
download | gdb-eceff73081bb2d5ebd624f6e2b775e93c4c7b298.tar.gz |
import dejagnu-1999-11-08 snapshotdejagnu-1999-11-08
Diffstat (limited to 'tcl/win/tclWinMtherr.c')
-rw-r--r-- | tcl/win/tclWinMtherr.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tcl/win/tclWinMtherr.c b/tcl/win/tclWinMtherr.c new file mode 100644 index 00000000000..654094a1915 --- /dev/null +++ b/tcl/win/tclWinMtherr.c @@ -0,0 +1,61 @@ +/* + * tclWinMtherr.c -- + * + * This function provides a default implementation of the + * _matherr function for Borland C++. + * + * Copyright (c) 1995 Sun Microsystems, Inc. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id$ + */ + +#include "tclInt.h" +#include "tclPort.h" +#include <math.h> + +/* + * The following variable is secretly shared with Tcl so we can + * tell if expression evaluation is in progress. If not, matherr + * just emulates the default behavior, which includes printing + * a message. + */ + +extern int tcl_MathInProgress; + +/* + *---------------------------------------------------------------------- + * + * _matherr -- + * + * This procedure is invoked by Borland C++ when certain + * errors occur in mathematical functions. This procedure + * replaces the default implementation which generates pop-up + * warnings. + * + * Results: + * Returns 1 to indicate that we've handled the error + * locally. + * + * Side effects: + * Sets errno based on what's in xPtr. + * + *---------------------------------------------------------------------- + */ + +int +_matherr(xPtr) + struct exception *xPtr; /* Describes error that occurred. */ +{ + if (!tcl_MathInProgress) { + return 0; + } + if ((xPtr->type == DOMAIN) || (xPtr->type == SING)) { + errno = EDOM; + } else { + errno = ERANGE; + } + return 1; +} |