summaryrefslogtreecommitdiffstats
path: root/win/tclWinMtherr.c
diff options
context:
space:
mode:
authorcvs2fossil <cvs2fossil>2011-01-25 19:02:56 (GMT)
committercvs2fossil <cvs2fossil>2011-01-25 19:02:56 (GMT)
commit352fce86be9d102b2284de839b7f7ff94ed971f2 (patch)
treee454e0d4460f15029e4ed5ae3f3131a992445426 /win/tclWinMtherr.c
parent75f084f6970d2344bb5a82fdff6a73825bc6e64e (diff)
downloadtcl-d17b46e6e2c06a5517e3628d8dd5d9710c745d33.zip
tcl-d17b46e6e2c06a5517e3628d8dd5d9710c745d33.tar.gz
tcl-d17b46e6e2c06a5517e3628d8dd5d9710c745d33.tar.bz2
Created branch dgp-refactor-merge-syntheticdgp_refactor_mergedgp_refactor_merge_synthetic
Diffstat (limited to 'win/tclWinMtherr.c')
-rw-r--r--win/tclWinMtherr.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/win/tclWinMtherr.c b/win/tclWinMtherr.c
new file mode 100644
index 0000000..b90c0f2
--- /dev/null
+++ b/win/tclWinMtherr.c
@@ -0,0 +1,53 @@
+/*
+ * 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: tclWinMtherr.c,v 1.5 2002/05/31 22:20:22 dgp Exp $
+ */
+
+#include "tclWinInt.h"
+#include <math.h>
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * _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 ((xPtr->type == DOMAIN)
+#ifdef __BORLANDC__
+ || (xPtr->type == TLOSS)
+#endif
+ || (xPtr->type == SING)) {
+ errno = EDOM;
+ } else {
+ errno = ERANGE;
+ }
+ return 1;
+}