You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pn...@apache.org on 2021/07/26 18:55:04 UTC
[celix] 04/05: Fixes memleak in pubsub topology manager
This is an automated email from the ASF dual-hosted git repository.
pnoltes pushed a commit to branch feature/pubsub-interceptor-fix
in repository https://gitbox.apache.org/repos/asf/celix.git
commit 0b04fde022c3cd9b681837d629fcb66d466be203
Author: Pepijn Noltes <pe...@gmail.com>
AuthorDate: Mon Jul 26 19:58:29 2021 +0200
Fixes memleak in pubsub topology manager
---
.../pubsub/pubsub_topology_manager/src/pubsub_topology_manager.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/bundles/pubsub/pubsub_topology_manager/src/pubsub_topology_manager.c b/bundles/pubsub/pubsub_topology_manager/src/pubsub_topology_manager.c
index eca3796..fdeb20c 100644
--- a/bundles/pubsub/pubsub_topology_manager/src/pubsub_topology_manager.c
+++ b/bundles/pubsub/pubsub_topology_manager/src/pubsub_topology_manager.c
@@ -932,15 +932,13 @@ static void pstm_setupTopicSenders(pubsub_topology_manager_t *manager) {
psa->matchPublisher(psa->handle, entry->bndId, entry->publisherFilter, &topicProps, &score, &serSvcId,
&protSvcId);
if (score > highestScore) {
- if (topicPropertiesForHighestMatch != NULL) {
- celix_properties_destroy(topicPropertiesForHighestMatch);
- }
+ celix_properties_destroy(topicPropertiesForHighestMatch);
highestScore = score;
serializerSvcId = serSvcId;
protocolSvcId = protSvcId;
selectedPsaSvcId = svcId;
topicPropertiesForHighestMatch = topicProps;
- } else if (topicProps != NULL) {
+ } else {
celix_properties_destroy(topicProps);
}
}
@@ -968,6 +966,7 @@ static void pstm_setupTopicSenders(pubsub_topology_manager_t *manager) {
entry->scope,
entry->topic,
celix_filter_getFilterString(entry->publisherFilter));
+ celix_properties_destroy(topicPropertiesForHighestMatch);
}
}
}
@@ -997,6 +996,8 @@ static void pstm_setupTopicSenders(pubsub_topology_manager_t *manager) {
celixThreadMutex_unlock(&manager->topicSenders.mutex);
} else {
celix_logHelper_warning(manager->loghelper, "Cannot setup TopicSender for %s/%s\n", setupEntry->scope == NULL ? "(null)" : setupEntry->scope, setupEntry->topic);
+ celix_properties_destroy(setupEntry->topicProperties);
+ celix_properties_destroy(setupEntry->endpointResult);
}
free(setupEntry->scope);
free(setupEntry->topic);