You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by di...@apache.org on 2019/01/04 03:07:19 UTC
[rocketmq-client-cpp] branch master updated: Fix push consumer dtor
segfault (#50)
This is an automated email from the ASF dual-hosted git repository.
dinglei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-client-cpp.git
The following commit(s) were added to refs/heads/master by this push:
new 847ef22 Fix push consumer dtor segfault (#50)
847ef22 is described below
commit 847ef22837f3ae3a69df0d64b08d85c14d25120c
Author: messense <me...@icloud.com>
AuthorDate: Fri Jan 4 11:07:15 2019 +0800
Fix push consumer dtor segfault (#50)
If the push consumer has not been started, deallocate it will segfault in current code.
---
src/consumer/DefaultMQPushConsumer.cpp | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/src/consumer/DefaultMQPushConsumer.cpp b/src/consumer/DefaultMQPushConsumer.cpp
index 70c9b88..96e5ec2 100644
--- a/src/consumer/DefaultMQPushConsumer.cpp
+++ b/src/consumer/DefaultMQPushConsumer.cpp
@@ -226,11 +226,21 @@ void DefaultMQPushConsumer::boost_asio_work() {
DefaultMQPushConsumer::~DefaultMQPushConsumer() {
m_pMessageListener = NULL;
- deleteAndZero(m_pullmsgQueue);
- deleteAndZero(m_pRebalance);
- deleteAndZero(m_pOffsetStore);
- deleteAndZero(m_pPullAPIWrapper);
- deleteAndZero(m_consumerService);
+ if (m_pullmsgQueue != NULL) {
+ deleteAndZero(m_pullmsgQueue);
+ }
+ if (m_pRebalance != NULL) {
+ deleteAndZero(m_pRebalance);
+ }
+ if (m_pOffsetStore != NULL) {
+ deleteAndZero(m_pOffsetStore);
+ }
+ if (m_pPullAPIWrapper != NULL) {
+ deleteAndZero(m_pPullAPIWrapper);
+ }
+ if (m_consumerService != NULL) {
+ deleteAndZero(m_consumerService);
+ }
PullMAP::iterator it = m_PullCallback.begin();
for (; it != m_PullCallback.end(); ++it) {
deleteAndZero(it->second);