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; | 
