diff --git a/src/gc.h b/src/gc.h
index c697e993f6a72f17389be4e789ebc05de876bfbf..b594b9d67d9873cd9d32f0423b9fab5fc6706ab9 100644
--- a/src/gc.h
+++ b/src/gc.h
@@ -1,5 +1,5 @@
 /*
- * $Id: gc.h,v 1.40 2000/05/04 03:14:31 hubbe Exp $
+ * $Id: gc.h,v 1.41 2000/05/16 08:37:24 hubbe Exp $
  */
 #ifndef GC_H
 #define GC_H
@@ -21,7 +21,7 @@ extern struct callback_list evaluator_callbacks;
 extern void *gc_svalue_location;
 #endif
 
-#define ADD_GC_CALLBACK() gc_evaluator_callback=add_to_callback(&evaluator_callbacks,(callback_func)do_gc,0,0)
+#define ADD_GC_CALLBACK() do { if(!gc_evaluator_callback)  gc_evaluator_callback=add_to_callback(&evaluator_callbacks,(callback_func)do_gc,0,0); }while(0)
 
 #define LOW_GC_ALLOC(OBJ) do {						\
  extern int d_flag;							\
@@ -38,12 +38,12 @@ extern void *gc_svalue_location;
 #ifdef ALWAYS_GC
 #define GC_ALLOC(OBJ) do{						\
   LOW_GC_ALLOC(OBJ);							\
-  if(!gc_evaluator_callback) ADD_GC_CALLBACK();				\
+  ADD_GC_CALLBACK();				\
 } while(0)
 #else
 #define GC_ALLOC(OBJ)  do{						\
   LOW_GC_ALLOC(OBJ);							\
-  if(num_allocs == alloc_threshold && !gc_evaluator_callback)		\
+  if(num_allocs == alloc_threshold)		\
     ADD_GC_CALLBACK();							\
 } while(0)
 #endif