summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/sys/rdma/rdma_wrap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/sys/rdma/rdma_wrap.cpp')
-rw-r--r--cpp/src/qpid/sys/rdma/rdma_wrap.cpp11
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);