Skip to content

Commit 69b86aa

Browse files
Fix crash caused by Message::getTopicName when the message is a producer message (#503)
1 parent fa413e1 commit 69b86aa

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

lib/MessageImpl.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,10 @@ void MessageImpl::setTopicName(const std::shared_ptr<std::string>& topicName) {
8888
messageId.setTopicName(topicName);
8989
}
9090

91-
const std::string& MessageImpl::getTopicName() { return *topicName_; }
91+
const std::string& MessageImpl::getTopicName() {
92+
static const std::string emptyString = "";
93+
return topicName_ ? *topicName_ : emptyString;
94+
}
9295

9396
int MessageImpl::getRedeliveryCount() { return redeliveryCount_; }
9497

tests/MessageTest.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,3 +147,8 @@ TEST(MessageTest, testMessageImplKeyValuePayloadCovert) {
147147
ASSERT_EQ(deMsgImpl.keyValuePtr->getValueAsString(), valueContent);
148148
}
149149
}
150+
151+
TEST(MessageTest, testGetTopicNameOnProducerMessage) {
152+
auto msg = MessageBuilder().setContent("test").build();
153+
ASSERT_TRUE(msg.getTopicName().empty());
154+
}

0 commit comments

Comments
 (0)