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) \