diff --git a/src/operators.c b/src/operators.c
index 8d5e7ce0758c9016a19ca2702da46b2f195192f4..247669a40e5f9dcf64eef1fc0359e97d488b1a5a 100644
--- a/src/operators.c
+++ b/src/operators.c
@@ -6,7 +6,7 @@
 /**/
 #include "global.h"
 #include <math.h>
-RCSID("$Id: operators.c,v 1.107 2000/09/26 10:04:33 hedda Exp $");
+RCSID("$Id: operators.c,v 1.108 2000/10/03 13:42:44 grubba Exp $");
 #include "interpret.h"
 #include "svalue.h"
 #include "multiset.h"
@@ -594,14 +594,15 @@ static node *optimize_binary(node *n)
 	 CAR(*first_arg)->token == F_CONSTANT &&
 	 is_eq(& CAR(*first_arg)->u.sval, & CAR(n)->u.sval))
       {
-	ret=mknode(F_APPLY,
-		   CAR(n),
-		   mknode(F_ARG_LIST,
-			  CDR(*first_arg),
-			  *second_arg));
-	ADD_NODE_REF(CAR(n));
-	ADD_NODE_REF(CDR(*first_arg));
-	ADD_NODE_REF(*second_arg);
+	ADD_NODE_REF2(CAR(n),
+	ADD_NODE_REF2(CDR(*first_arg),
+	ADD_NODE_REF2(*second_arg,
+		      ret = mknode(F_APPLY,
+				   CAR(n),
+				   mknode(F_ARG_LIST,
+					  CDR(*first_arg),
+					  *second_arg))
+	)));
 	return ret;
       }
       
@@ -609,14 +610,15 @@ static node *optimize_binary(node *n)
 	 CAR(*second_arg)->token == F_CONSTANT &&
 	 is_eq(& CAR(*second_arg)->u.sval, & CAR(n)->u.sval))
       {
-	ret=mknode(F_APPLY,
-		   CAR(n),
-		   mknode(F_ARG_LIST,
-			  *first_arg,
-			  CDR(*second_arg)));
-	ADD_NODE_REF(CAR(n));
-	ADD_NODE_REF(*first_arg);
-	ADD_NODE_REF(CDR(*second_arg));
+	ADD_NODE_REF2(CAR(n),
+	ADD_NODE_REF2(*first_arg,
+	ADD_NODE_REF2(CDR(*second_arg),
+		      ret = mknode(F_APPLY,
+				   CAR(n),
+				   mknode(F_ARG_LIST,
+					  *first_arg,
+					  CDR(*second_arg)))
+	)));
 	return ret;
       }
     }