Index: doc/theses/thierry_delisle_PhD/code/snzi.hpp
===================================================================
--- doc/theses/thierry_delisle_PhD/code/snzi.hpp	(revision c0587193a9a325a5e3fbfb7aa1a010a4a16c6702)
+++ doc/theses/thierry_delisle_PhD/code/snzi.hpp	(revision 9304ca22751b45f2db1efe1467957d95e96a2e71)
@@ -14,4 +14,5 @@
 
 	void arrive(int idx) {
+		idx >>= 2;
 		idx %= mask;
 		nodes[idx].arrive();
@@ -19,4 +20,5 @@
 
 	void depart(int idx) {
+		idx >>= 2;
 		idx %= mask;
 		nodes[idx].depart();
@@ -82,5 +84,9 @@
 				if( x.cnt == val_t::Half ) {
 					/* paranoid */ assert(parent);
-					parent->arrive();
+					if(undoArr == 2) {
+						undoArr--;
+					} else {
+						parent->arrive();
+					}
 					if( !value.cas(x, 1, x.ver) ) {
 						undoArr = undoArr + 1;
