bugfix
diff --git a/communication.c b/communication.c
index 6db6858..bfe9110 100644
--- a/communication.c
+++ b/communication.c
@@ -350,7 +350,9 @@
 	new = newcounters;
 	while (cc) {
 		if (!next) {
-			while (!(entries = ebt_nr_to_chain(u_repl, chainnr++)));
+			while (!(entries = ebt_nr_to_chain(u_repl, chainnr++)))
+				if (chainnr > NF_BR_NUMHOOKS)
+					goto letscontinue;/* Prevent infinite loop for -D x:-1 */
 			if (!(next = entries->entries))
 				continue;
 		}
@@ -397,6 +399,7 @@
 		}
 		cc = cc->next;
 	}
+letscontinue:
 
 	free(u_repl->counters);
 	u_repl->counters = newcounters;