diff options
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/IceInternal/BasicStream.java | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/java/src/IceInternal/BasicStream.java b/java/src/IceInternal/BasicStream.java index 69648f7c129..90e7cea53ce 100644 --- a/java/src/IceInternal/BasicStream.java +++ b/java/src/IceInternal/BasicStream.java @@ -986,6 +986,7 @@ public class BasicStream { if (_buf.position() == _limit) { + int oldLimit = _limit; _limit += size; if (_limit > MAX) { @@ -995,8 +996,13 @@ public class BasicStream { final int cap2 = _capacity << 1; int newCapacity = cap2 > _limit ? cap2 : _limit; + _buf.limit(oldLimit); + int pos = _buf.position(); + _buf.position(0); _buf = _bufferManager.reallocate(_buf, newCapacity); _capacity = _buf.capacity(); + _buf.limit(_capacity); + _buf.position(pos); } } } |