summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2006-10-26 17:10:07 +0000
committerDwayne Boone <dwayne@zeroc.com>2006-10-26 17:10:07 +0000
commit7866175bc5d5952b92c98b2c6844738bbeb20a4d (patch)
treeb604a1b9f0e869a91df900a71ac5c9abff9ff4f8 /cpp/src
parentMakefile.mak cleanup (diff)
downloadice-7866175bc5d5952b92c98b2c6844738bbeb20a4d.tar.bz2
ice-7866175bc5d5952b92c98b2c6844738bbeb20a4d.tar.xz
ice-7866175bc5d5952b92c98b2c6844738bbeb20a4d.zip
Bug 1366 - buffer max size
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/BasicStream.cpp2
-rw-r--r--cpp/src/Ice/Buffer.cpp5
2 files changed, 4 insertions, 3 deletions
diff --git a/cpp/src/Ice/BasicStream.cpp b/cpp/src/Ice/BasicStream.cpp
index 01eb559d8cd..ec5b2915957 100644
--- a/cpp/src/Ice/BasicStream.cpp
+++ b/cpp/src/Ice/BasicStream.cpp
@@ -31,7 +31,7 @@ using namespace Ice;
using namespace IceInternal;
IceInternal::BasicStream::BasicStream(Instance* instance) :
- IceInternal::Buffer(instance->memoryPool()),
+ IceInternal::Buffer(instance->memoryPool(), instance->messageSizeMax()),
_instance(instance),
_currentReadEncaps(0),
_currentWriteEncaps(0),
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)