ntl/ntl-sagemath.patch
2014-04-02 08:11:47 -06:00

52 lines
1.5 KiB
Diff

--- ./include/NTL/tools.h.orig 2013-02-15 07:44:27.000000000 -0700
+++ ./include/NTL/tools.h 2013-05-03 15:15:53.879506639 -0600
@@ -293,6 +293,12 @@ long CharToIntVal(long c);
char IntValToChar(long a);
+/*
+ This function is not present in vanilla NTL.
+ See tools.c for documentation.
+ */
+void SetErrorCallbackFunction(void (*func)(const char *s, void *context),
+ void *context);
void Error(const char *s);
--- ./src/tools.c.orig 2013-02-15 07:44:26.000000000 -0700
+++ ./src/tools.c 2013-05-03 15:14:35.486648170 -0600
@@ -17,9 +17,33 @@ NTL_START_IMPL
void (*ErrorCallback)() = 0;
+/*
+ The following code differs from vanilla NTL.
+
+ We add a SetErrorCallbackFunction(). This sets a global callback function
+ _function_, which gets called with parameter _context_ and an error
+ message string whenever Error() gets called.
+
+ Note that if the custom error handler *returns*, then NTL will dump the
+ error message back to stderr and abort() as it habitually does.
+
+ -- David Harvey (2008-04-12)
+*/
+
+void (*ErrorCallbackFunction)(const char*, void*) = NULL;
+void *ErrorCallbackContext = NULL;
+
+void SetErrorCallbackFunction(void (*function)(const char*, void*), void *context)
+{
+ ErrorCallbackFunction = function;
+ ErrorCallbackContext = context;
+}
void Error(const char *s)
{
+ if (ErrorCallbackFunction != NULL)
+ ErrorCallbackFunction(s, ErrorCallbackContext);
+
cerr << s << "\n";
_ntl_abort();
}