summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mtrie.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mtrie.cpp b/src/mtrie.cpp
index edff336..01c4fc5 100644
--- a/src/mtrie.cpp
+++ b/src/mtrie.cpp
@@ -210,13 +210,17 @@ void zmq::mtrie_t::match (unsigned char *data_, size_t size_,
void (*func_) (pipe_t *pipe_, void *arg_), void *arg_)
{
mtrie_t *current = this;
- while (size_) {
+ while (true) {
// Signal the pipes attached to this node.
for (pipes_t::iterator it = current->pipes.begin ();
it != current->pipes.end (); ++it)
func_ (*it, arg_);
+ // If we are at the end of the message, there's nothing more to match.
+ if (!size_)
+ break;
+
// If there are no subnodes in the trie, return.
if (current->count == 0)
break;