diff options
author | Mark Spruiell <mes@zeroc.com> | 2002-03-11 22:02:29 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2002-03-11 22:02:29 +0000 |
commit | beb00c32c02e779fac76992921e37f0c3cc7b00d (patch) | |
tree | 5d38be82c7ece2d266bebdff87571315b596ddac /java/src | |
parent | minor fix (diff) | |
download | ice-beb00c32c02e779fac76992921e37f0c3cc7b00d.tar.bz2 ice-beb00c32c02e779fac76992921e37f0c3cc7b00d.tar.xz ice-beb00c32c02e779fac76992921e37f0c3cc7b00d.zip |
fixes for MemoryLimitException
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/IceInternal/BasicStream.java | 4 | ||||
-rw-r--r-- | java/src/IceInternal/BufferManager.java | 26 |
2 files changed, 26 insertions, 4 deletions
diff --git a/java/src/IceInternal/BasicStream.java b/java/src/IceInternal/BasicStream.java index 992a2feee84..cfddbf774b5 100644 --- a/java/src/IceInternal/BasicStream.java +++ b/java/src/IceInternal/BasicStream.java @@ -932,6 +932,10 @@ public class BasicStream if (_buf.position() == _limit) { _limit += size; + if (_limit > MAX) + { + throw new Ice.MemoryLimitException(); + } if (_limit > _capacity) { final int cap2 = _capacity << 1; diff --git a/java/src/IceInternal/BufferManager.java b/java/src/IceInternal/BufferManager.java index fde144ccd94..63abf762423 100644 --- a/java/src/IceInternal/BufferManager.java +++ b/java/src/IceInternal/BufferManager.java @@ -23,8 +23,17 @@ final class BufferManager java.nio.ByteBuffer buf = getBuffer(size); if (buf == null) { - //buf = java.nio.ByteBuffer.allocateDirect(size); - buf = java.nio.ByteBuffer.allocate(size); + try + { + //buf = java.nio.ByteBuffer.allocateDirect(size); + buf = java.nio.ByteBuffer.allocate(size); + } + catch (OutOfMemoryError ex) + { + Ice.MemoryLimitException e = new Ice.MemoryLimitException(); + e.initCause(ex); + throw e; + } buf.order(java.nio.ByteOrder.LITTLE_ENDIAN); } return buf; @@ -36,8 +45,17 @@ final class BufferManager java.nio.ByteBuffer buf = getBuffer(size); if (buf == null) { - //buf = java.nio.ByteBuffer.allocateDirect(size); - buf = java.nio.ByteBuffer.allocate(size); + try + { + //buf = java.nio.ByteBuffer.allocateDirect(size); + buf = java.nio.ByteBuffer.allocate(size); + } + catch (OutOfMemoryError ex) + { + Ice.MemoryLimitException e = new Ice.MemoryLimitException(); + e.initCause(ex); + throw e; + } buf.order(java.nio.ByteOrder.LITTLE_ENDIAN); } buf.put(old); |