diff --git a/openwire-cpp/src/main/cpp/activemq/MessageConsumer.cpp b/openwire-cpp/src/main/cpp/activemq/MessageConsumer.cpp index ddc3c474ac..36d18c6cef 100644 --- a/openwire-cpp/src/main/cpp/activemq/MessageConsumer.cpp +++ b/openwire-cpp/src/main/cpp/activemq/MessageConsumer.cpp @@ -217,20 +217,26 @@ p MessageConsumer::autoAcknowledge(p message) { try { - // Is the message an ActiveMQMessage? (throws bad_cast otherwise) - p activeMessage = p_dyncast (message) ; + if( message != NULL ) + { + // Is the message an ActiveMQMessage? (throws bad_cast otherwise) + p activeMessage = + p_dyncast (message); + + // Register the handler for client acknowledgment + activeMessage->setAcknowledger( smartify(this) ); - // Register the handler for client acknowledgment - activeMessage->setAcknowledger( smartify(this) ) ; - - if( acknowledgementMode != ClientAckMode ) - doAcknowledge(activeMessage) ; + if( acknowledgementMode != ClientAckMode ) + doAcknowledge(activeMessage); + } } catch( bad_cast& bc ) { // ignore } - return message ; + + // Return the message even if NULL, caller must determine what to do. + return message; } /*