diff --git a/src/qamqpclient.cpp b/src/qamqpclient.cpp index eaa166f..a0e5659 100644 --- a/src/qamqpclient.cpp +++ b/src/qamqpclient.cpp @@ -660,8 +660,9 @@ QAmqpExchange *QAmqpClient::createExchange(int channelNumber) QAmqpExchange *QAmqpClient::createExchange(const QString &name, int channelNumber) { Q_D(QAmqpClient); - if (!name.isEmpty() && d->exchanges.contains(name)) - return d->exchanges[name]; + if (!name.isEmpty() && d->exchanges.contains(name) + && (!d->exchanges[name].isNull())) + return d->exchanges[name].data(); QAmqpExchange *exchange = new QAmqpExchange(channelNumber, this); d->methodHandlersByChannel[exchange->channelNumber()].append(exchange->d_func()); @@ -684,8 +685,9 @@ QAmqpQueue *QAmqpClient::createQueue(int channelNumber) QAmqpQueue *QAmqpClient::createQueue(const QString &name, int channelNumber) { Q_D(QAmqpClient); - if (!name.isEmpty() && d->queues.contains(name)) - return d->queues[name]; + if (!name.isEmpty() && d->queues.contains(name) + && (!d->queues[name].isNull())) + return d->queues[name].data(); QAmqpQueue *queue = new QAmqpQueue(channelNumber, this); d->methodHandlersByChannel[queue->channelNumber()].append(queue->d_func()); diff --git a/src/qamqpclient_p.h b/src/qamqpclient_p.h index ea84146..b0e4ad4 100644 --- a/src/qamqpclient_p.h +++ b/src/qamqpclient_p.h @@ -101,10 +101,10 @@ public: QString errorString; /*! Exchange objects */ - QHash exchanges; + QHash > exchanges; /*! Named queue objects */ - QHash queues; + QHash > queues; QAmqpClient * const q_ptr; Q_DECLARE_PUBLIC(QAmqpClient)