// gsl_error_handler_t * gsl_set_error_handler_off () func SetErrorHandlerOff() *GslErrorHandler { oldHandler := uintptr(unsafe.Pointer(C.gsl_set_error_handler_off())) prevPtr := uintptr(C.get_go_gsl_error_handler_ptr()) C.set_go_gsl_error_handler_ptr(unsafe.Pointer(nil)) if oldHandler == 0 { // No previous handler installed. return nil } if prevPtr != 0 { // The previous handler was a Go handler, reuse the returned structure. return (*GslErrorHandler)(unsafe.Pointer(prevPtr)) } else { // The previous handler was a C handler, create a new Go structure for it via closure. return &GslErrorHandler{ cptr: oldHandler, cSideHandler: true, Handler: func(reason string, file string, line int, gslError GslError) { cReason := C.CString(reason) cFile := C.CString(file) C.call_gsl_error_handler((*C.gsl_error_handler_t)(unsafe.Pointer(oldHandler)), cReason, cFile, C.int(line), C.int(gslError)) C.free(unsafe.Pointer(cReason)) C.free(unsafe.Pointer(cFile)) }, } } }
func init() { C.gsl_set_error_handler_off() }