diff --git a/src/error.c b/src/error.c index 94400bbf90c5ce0191477a535fa58ce48232cc43..9a41163fc5c7e360f932f95c0fd3e7ab35b3868c 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.43 2000/04/04 15:30:21 grubba Exp $"); +RCSID("$Id: error.c,v 1.44 2000/04/04 15:39:13 grubba Exp $"); #undef ATTRIBUTE #define ATTRIBUTE(X) @@ -372,8 +372,15 @@ void f_error_backtrace(INT32 args) #define ERROR_COPY(STRUCT,X) \ ERROR_STRUCT(STRUCT,o)->X=X -#define ERROR_COPY_SVALUE(STRUCT,X) \ - (X?assign_svalue_no_free( & ERROR_STRUCT(STRUCT,o)->X, X):((ERROR_STRUCT(STRUCT, o)->X.type = T_INTEGER), (ERROR_STRUCT(STRUCT, o)->X.subtype = 0), (ERROR_STRUCT(STRUCT, o)->X.u.integer = 0))) +#define ERROR_COPY_SVALUE(STRUCT,X) do { \ + if (X) { \ + assign_svalue_no_free( & ERROR_STRUCT(STRUCT,o)->X, X); \ + } else { \ + ERROR_STRUCT(STRUCT, o)->X.type = T_INT; \ + ERROR_STRUCT(STRUCT, o)->X.subtype = 0; \ + ERROR_STRUCT(STRUCT, o)->X.u.integer = 0; \ + } \ + } while (0) #define ERROR_COPY_REF(STRUCT,X) \