diff options
Diffstat (limited to 'cpp/src/qpid/sys/rdma/rdma_wrap.cpp')
| -rw-r--r-- | cpp/src/qpid/sys/rdma/rdma_wrap.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/cpp/src/qpid/sys/rdma/rdma_wrap.cpp b/cpp/src/qpid/sys/rdma/rdma_wrap.cpp index ec6e6c6b99..a51244a7dc 100644 --- a/cpp/src/qpid/sys/rdma/rdma_wrap.cpp +++ b/cpp/src/qpid/sys/rdma/rdma_wrap.cpp @@ -184,9 +184,12 @@ namespace Rdma { Buffer* QueuePair::getBuffer() { qpid::sys::ScopedLock<qpid::sys::Mutex> l(bufferLock); - assert(!freeBuffers.empty()); - Buffer* b = &sendBuffers[freeBuffers.back()]; + if (freeBuffers.empty()) + return 0; + int i = freeBuffers.back(); freeBuffers.pop_back(); + assert(i >= 0 && i < int(sendBuffers.size())); + Buffer* b = &sendBuffers[i]; b->dataCount(0); return b; } @@ -198,10 +201,6 @@ namespace Rdma { freeBuffers.push_back(i); } - bool QueuePair::bufferAvailable() const { - return !freeBuffers.empty(); - } - void QueuePair::allocateRecvBuffers(int recvBufferCount, int bufferSize) { assert(!rmr); |
