diff --git a/src/error.c b/src/error.c index e13f9560bd26e9d0d331c8ac56d5c77012a27fde..b01a15ca7e5d5547066e0f629085150bdf75833b 100644 --- a/src/error.c +++ b/src/error.c @@ -19,7 +19,7 @@ #include "module_support.h" #include "threads.h" -RCSID("$Id: error.c,v 1.39 1999/10/06 15:30:05 grubba Exp $"); +RCSID("$Id: error.c,v 1.40 1999/12/07 01:33:03 grubba Exp $"); #undef ATTRIBUTE #define ATTRIBUTE(X) @@ -115,7 +115,7 @@ void low_error(char *buf) ATTRIBUTE((noreturn)) push_error(buf); free_svalue(& throw_value); throw_value = *--sp; - throw_severity=THROW_ERROR; + throw_severity = THROW_ERROR; in_error=0; pike_throw(); /* Hope someone is catching, or we will be out of balls. */ } @@ -340,12 +340,19 @@ void f_error_backtrace(INT32 args) ref_push_array(GENERIC_ERROR_THIS->backtrace); } +#ifdef ERROR_DEBUG +#define DWERROR(X) fprintf X +#else /* !ERROR_DEBUG */ +#define DWERROR(X) +#endif /* ERROR_DEBUG */ + #define INIT_ERROR(FEL)\ va_list foo; \ struct object *o; \ va_start(foo,desc); \ ASSERT_THREAD_SWAPPED_IN(); \ - o=low_clone(PIKE_CONCAT(FEL,_error_program)); + o=low_clone(PIKE_CONCAT(FEL,_error_program)); \ + DWERROR((stderr, "%s(): Throwing a " #FEL " error\n", func)) #define ERROR_DONE(FOO) \ PIKE_CONCAT(FOO,_error_va(o,func, \ @@ -413,6 +420,7 @@ void generic_error_va(struct object *o, ERROR_STRUCT(generic,o)->backtrace=sp[-1].u.array; sp--; + dmalloc_touch_svalue(sp); free_svalue(& throw_value); throw_value.type=T_OBJECT; @@ -463,6 +471,8 @@ void bad_arg_error( ERROR_STRUCT(bad_arg,o)->got.subtype=NUMBER_UNDEFINED; ERROR_STRUCT(bad_arg,o)->got.u.integer=0; } + DWERROR((stderr, "%s():Bad arg %d (expected %s)\n", + func, which_arg, expected_type)); ERROR_DONE(generic); }