From 03fca626a95130ab80f86adada54b29d27242759 Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Sun, 6 Sep 2020 13:05:13 +0200 Subject: [PATCH] Fix overflow of triggered topics --- src/TopicTree.h | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/TopicTree.h b/src/TopicTree.h index 0b945b3..80dd180 100644 --- a/src/TopicTree.h +++ b/src/TopicTree.h @@ -124,10 +124,6 @@ private: /* Should be getData and commit? */ void publish(Topic *iterator, size_t start, size_t stop, std::string_view topic, std::pair message) { - /* If we already have 64 triggered topics make sure to drain it here */ - if (numTriggeredTopics == 64) { - drain(); - } /* Iterate over all segments in given topic */ for (; stop != std::string::npos; start = stop + 1) { @@ -151,6 +147,11 @@ private: /* Add this topic to triggered */ if (!iterator->terminatingWildcardChild->triggered) { + /* If we already have 64 triggered topics make sure to drain it here */ + if (numTriggeredTopics == 64) { + drain(); + } + triggeredTopics[numTriggeredTopics++] = iterator->terminatingWildcardChild; iterator->terminatingWildcardChild->triggered = true; } @@ -175,6 +176,11 @@ private: /* Add this topic to triggered */ if (!iterator->triggered) { + /* If we already have 64 triggered topics make sure to drain it here */ + if (numTriggeredTopics == 64) { + drain(); + } + triggeredTopics[numTriggeredTopics++] = iterator; iterator->triggered = true; }