>From bb66f3cc3bc2a76d10f16e1206f35480eb250a07 Mon Sep 17 00:00:00 2001
From: Martin Sustrik <[email protected]>
Date: Sat, 5 Nov 2011 16:05:18 +0100
Subject: [PATCH] Bug in trie fixed (issue 277)

When there were both '0' and '255' subnodes in (mtrie)
the removal of the node resulted in an infinite loop.
Fixed.

Signed-off-by: Martin Sustrik <[email protected]>
---
 src/mtrie.cpp |    2 +-
 src/trie.cpp  |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mtrie.cpp b/src/mtrie.cpp
index 1c96c98..65b4fe8 100644
--- a/src/mtrie.cpp
+++ b/src/mtrie.cpp
@@ -171,7 +171,7 @@ void zmq::mtrie_t::rm_helper (pipe_t *pipe_, unsigned char **buff_,
     }
 
     //  If there are multiple subnodes.
-    for (unsigned char c = 0; c != count; c++) {
+    for (unsigned short c = 0; c != count; c++) {
         (*buff_) [buffsize_] = min + c;
         if (next.table [c])
             next.table [c]->rm_helper (pipe_, buff_, buffsize_ + 1,
diff --git a/src/trie.cpp b/src/trie.cpp
index 9718c77..d53a135 100644
--- a/src/trie.cpp
+++ b/src/trie.cpp
@@ -219,7 +219,7 @@ void zmq::trie_t::apply_helper (
     }
 
     //  If there are multiple subnodes.
-    for (unsigned char c = 0; c != count; c++) {
+    for (unsigned short c = 0; c != count; c++) {
         (*buff_) [buffsize_] = min + c;
         if (next.table [c])
             next.table [c]->apply_helper (buff_, buffsize_ + 1, maxbuffsize_,
-- 
1.7.0.4

_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to