summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Buffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/Buffer.cpp')
-rw-r--r--cpp/src/Ice/Buffer.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/cpp/src/Ice/Buffer.cpp b/cpp/src/Ice/Buffer.cpp
index dc8a6595827..1273ea92aaa 100644
--- a/cpp/src/Ice/Buffer.cpp
+++ b/cpp/src/Ice/Buffer.cpp
@@ -22,10 +22,11 @@ IceInternal::Buffer::swap(Buffer& other)
std::swap(i, other.i);
}
-IceInternal::Buffer::Container::Container(IceInternal::MemoryPool* pool) :
+IceInternal::Buffer::Container::Container(IceInternal::MemoryPool* pool, size_type maxCapacity) :
_buf(0),
_size(0),
_capacity(0),
+ _maxCapacity(maxCapacity),
_pool(pool)
{
}
@@ -73,7 +74,7 @@ IceInternal::Buffer::Container::reserve(size_type n)
{
if(n > _capacity)
{
- _capacity = std::max<size_type>(n, 2 * _capacity);
+ _capacity = std::max<size_type>(n, std::min(2 * _capacity, _maxCapacity));
_capacity = std::max<size_type>(static_cast<size_type>(240), _capacity);
}
else if(n < _capacity)