diff options
-rw-r--r-- | src/mtrie.cpp | 6 |
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; |