diff --git a/include/gate.h b/include/gate.h
index a4e88f455c1776913a2e79a36435045d5b66e6d1..3fdd4a3ad6ee221e7414fee0598b767c65f2ff40 100644
--- a/include/gate.h
+++ b/include/gate.h
@@ -48,7 +48,7 @@ void newgate2(log_grec **gate, short gt, short sig, log_gattrrec *attrs);
 void unlkgate(log_grec **gate);
 void disposegptr(log_grec **gate);
 void chggate(log_grec *gate, int i, log_nrec *oldnode, log_nrec *n);
-void chggatepin(log_grec *gate, short i, log_nrec **oldnode, log_nrec **savenode);
+void chggatepin(log_grec *gate, short i, log_nrec **oldnode);
 void frygate(log_grec *gate);
 void initpinpos(log_grec *gate);
 void addgate2(short x, short y, short gtype, short sig, log_gattrrec *attrs);
diff --git a/include/node.h b/include/node.h
index 28b922c69400cfb69cd17ca12f556abe37bffbc5..19f6f18c27118bb6908b2ed57a9aed24838ced7e 100644
--- a/include/node.h
+++ b/include/node.h
@@ -46,7 +46,7 @@ struct LOC_checkcombine {
 int checkcombine(cnrec **cnbase_);
 void queuecombine(cnrec **cnbase, log_nrec **n, log_nrec **n2);
 void newnoderef(log_nrec **n, uchar st, long ref);
-void delgetnode(log_nrec **save, log_nrec **old, log_nrec **n);
+void delgetnode(log_nrec **old, log_nrec **n);
 void checknode(log_nrec *n, struct LOC_checkcombine *LINK);
 int trycombinenodes(log_nrec **n1, log_nrec **n2);
 void reportnodeconflict(log_nrec *n);
diff --git a/src/gate.c b/src/gate.c
index ee30633f1733b312c3522940858e973c172f17ce..74bcfcb6dee89cfcb03a1a0b562e2ea9ead502dd 100644
--- a/src/gate.c
+++ b/src/gate.c
@@ -375,7 +375,7 @@ void chggate(log_grec *gate, int i, log_nrec *oldnode, log_nrec *n)
 }
 
 
-void chggatepin(log_grec *gate, short i, log_nrec **oldnode, log_nrec **savenode)
+void chggatepin(log_grec *gate, short i, log_nrec **oldnode)
 {
 	log_nrec *n;
 	log_hwrec *hw;
@@ -391,7 +391,7 @@ void chggatepin(log_grec *gate, short i, log_nrec **oldnode, log_nrec **savenode
 	{
 		if (hw->x1 <= x && x <= hw->x2 && hw->y == y && hw->node == *oldnode)
 		{
-			delgetnode(savenode, oldnode, &n);
+			delgetnode(oldnode, &n);
 			if (n != *oldnode)
 				chghw(hw, *oldnode, n);
 		}
@@ -402,7 +402,7 @@ void chggatepin(log_grec *gate, short i, log_nrec **oldnode, log_nrec **savenode
 	{
 		if (vw->y1 <= y && y <= vw->y2 && vw->x == x && vw->node == *oldnode)
 		{
-			delgetnode(savenode, oldnode, &n);
+			delgetnode(oldnode, &n);
 			if (n != *oldnode)
 				chgvw(vw, *oldnode, n);
 		}
@@ -419,7 +419,7 @@ void chggatepin(log_grec *gate, short i, log_nrec **oldnode, log_nrec **savenode
 			{
 				if (x == g1->pinpos[j - 1].x && y == g1->pinpos[j - 1].y &&
 						g1->pin[j - 1] == *oldnode) {
-					delgetnode(savenode, oldnode, &n);
+					delgetnode(oldnode, &n);
 					if (n != *oldnode)
 						chggate(g1, j, *oldnode, n);
 				}
@@ -432,7 +432,6 @@ void chggatepin(log_grec *gate, short i, log_nrec **oldnode, log_nrec **savenode
 
 void disconnectgate(log_grec *gate)
 {
-	log_nrec *savenode;
 	short i, j;
 	log_nrec **oldnode;
 	long done[log_maxpins / 32 + 2];
@@ -456,12 +455,8 @@ void disconnectgate(log_grec *gate)
 		if (!P_inset(i, done))
 		{
 			j = i;
-			if (i == 1 && gate->kind->simtype == simtype_common && gate->sig != 0)
-				savenode = NULL;
-			else
-				savenode = oldnode[i - 1];
 			do {
-				chggatepin(gate, j, &oldnode[i - 1], &savenode);
+				chggatepin(gate, j, &oldnode[i - 1]);
 				P_addset(done, j);
 				j = gate->kind->pin[j - 1].c;
 			} while (j != i && j != 0);
diff --git a/src/node.c b/src/node.c
index f579f4ee1631e80336cb454e760c981069124e0f..5fb8a211c1ad713e9b9bd78a81267a96e3300513 100644
--- a/src/node.c
+++ b/src/node.c
@@ -331,7 +331,7 @@ void dumpnodes()
 	trace_message("\n\n-------------------------------------------------------------------------\n\n\n");
 }
 
-void delgetnode(log_nrec **save, log_nrec **old, log_nrec **node)
+void delgetnode(log_nrec **old, log_nrec **node)
 {
 	copynode(*old, node);
 }
diff --git a/src/wire.c b/src/wire.c
index 49a42b13195be3cd63bcbd6590b94cfb23f4fb3b..531263366a4b6de50ea519f08740576fb5176fdc 100644
--- a/src/wire.c
+++ b/src/wire.c
@@ -489,7 +489,7 @@ void delhwire(log_hwrec *hw)
 	log_vwrec *vw;
 	log_hwrec *hw1;
 	log_srec *s, *s1;
-	log_nrec *oldnode, *n, *savenode;
+	log_nrec *oldnode, *n;
 	log_grec *g;
 	short i, x, y, FORLIM;
 
@@ -500,7 +500,6 @@ void delhwire(log_hwrec *hw)
 	oldnode = hw->node;
 	stamp(&oldnode->simtype->netstamp);
 	switchnode(&hw->node, NULL);
-	savenode = oldnode;
 	s = gg.pages[gg.curpage - 1]->sbase;
 	while (s != NULL)
 	{
@@ -528,7 +527,7 @@ void delhwire(log_hwrec *hw)
 		if (hw->x1 <= vw->x && vw->x <= hw->x2 && vw->y1 <= hw->y &&
 				hw->y <= vw->y2 && vw->node == oldnode)
 		{
-			delgetnode(&savenode, &oldnode, &n);
+			delgetnode(&oldnode, &n);
 			if (n != oldnode)
 				chgvw(vw, oldnode, n);
 		}
@@ -539,7 +538,7 @@ void delhwire(log_hwrec *hw)
 	{
 		if (hw->y == hw1->y && (hw1->x1 == hw->x2 || hw1->x2 == hw->x1) &&
 				hw1->node == oldnode) {
-			delgetnode(&savenode, &oldnode, &n);
+			delgetnode(&oldnode, &n);
 			if (n != oldnode)
 				chghw(hw1, oldnode, n);
 		}
@@ -561,7 +560,7 @@ void delhwire(log_hwrec *hw)
 					y = g->pinpos[i - 1].y;
 					if (hw->x1 <= x && x <= hw->x2 && y == hw->y)
 					{
-						delgetnode(&savenode, &oldnode, &n);
+						delgetnode(&oldnode, &n);
 						if (n != oldnode)
 							chggate(g, i, oldnode, n);
 					}
@@ -580,7 +579,7 @@ void delvwire(log_vwrec *vw)
 	log_hwrec *hw;
 	log_vwrec *vw1;
 	log_srec *s, *s1;
-	log_nrec *oldnode, *n, *savenode;
+	log_nrec *oldnode, *n;
 	log_grec *g;
 	short i, x, y, FORLIM;
 
@@ -591,7 +590,6 @@ void delvwire(log_vwrec *vw)
 	oldnode = vw->node;
 	stamp(&oldnode->simtype->netstamp);
 	switchnode(&vw->node, NULL);
-	savenode = oldnode;
 	s = gg.pages[gg.curpage - 1]->sbase;
 	while (s != NULL)
 	{
@@ -618,7 +616,7 @@ void delvwire(log_vwrec *vw)
 		if (hw->x1 <= vw->x && vw->x <= hw->x2 && vw->y1 <= hw->y &&
 				hw->y <= vw->y2 && hw->node == oldnode)
 		{
-			delgetnode(&savenode, &oldnode, &n);
+			delgetnode(&oldnode, &n);
 			if (n != oldnode)
 				chghw(hw, oldnode, n);
 		}
@@ -630,7 +628,7 @@ void delvwire(log_vwrec *vw)
 		if (vw->x == vw1->x && (vw1->y1 == vw->y2 || vw1->y2 == vw->y1) &&
 				vw1->node == oldnode)
 		{
-			delgetnode(&savenode, &oldnode, &n);
+			delgetnode(&oldnode, &n);
 			if (n != oldnode)
 				chgvw(vw1, oldnode, n);
 		}
@@ -652,7 +650,7 @@ void delvwire(log_vwrec *vw)
 					y = g->pinpos[i - 1].y;
 					if (vw->y1 <= y && y <= vw->y2 && x == vw->x)
 					{
-						delgetnode(&savenode, &oldnode, &n);
+						delgetnode(&oldnode, &n);
 						if (n != oldnode)
 							chggate(g, i, oldnode, n);
 					}