At Thu, 27 Aug 2009 17:15:39 -0600, Gerard Jungman wrote: > GSL implements a very rudimentary type of error-handling, which > is quite appropriate for small projects. The "register handler, > fail-by-default" model works for a small library with a "low > stack depth" usage model. By this, I mean that library functions > are called by clients, but not by other library functions; in > such a case, it is easy for the client to interpret the errors. > But GSL does not conform to this "low stack depth" usage model, > and the fail-by-default model can be confusing for clients, when > the failure occurs at depths that they cannot control.
The issue here is threading -- otherwise we could use a global variable to control the behaviour. Either we have to - pass an extra argument to all(?) functions for error control (seems a large impact for a relatively small problem) - provide separate _impl non-aborting versions for functions called internally, similar to the special functions (simplest option). - use thread local storage for a global error control variable (not 100% portable). -- Brian Gough
