diff options
author | Benoit Foucher <benoit@zeroc.com> | 2013-01-23 14:36:10 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2013-01-23 14:36:10 +0100 |
commit | 66bf1a7f2d0d46281ebf3d62caab6b9158eaa8a0 (patch) | |
tree | bd6aca447179f8d2e586c12cb961d683552504be /java/src/Ice/InputStreamI.java | |
parent | Minor code style fixes (diff) | |
download | ice-66bf1a7f2d0d46281ebf3d62caab6b9158eaa8a0.tar.bz2 ice-66bf1a7f2d0d46281ebf3d62caab6b9158eaa8a0.tar.xz ice-66bf1a7f2d0d46281ebf3d62caab6b9158eaa8a0.zip |
Fix for ICE-4841 - added no copy option when creating input stream
Diffstat (limited to 'java/src/Ice/InputStreamI.java')
-rw-r--r-- | java/src/Ice/InputStreamI.java | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/java/src/Ice/InputStreamI.java b/java/src/Ice/InputStreamI.java index 68676199847..2fd21254f57 100644 --- a/java/src/Ice/InputStreamI.java +++ b/java/src/Ice/InputStreamI.java @@ -12,32 +12,37 @@ package Ice; public class InputStreamI implements InputStream { public - InputStreamI(Communicator communicator, byte[] data) + InputStreamI(Communicator communicator, byte[] data, boolean copyData) { _communicator = communicator; IceInternal.Instance instance = IceInternal.Util.getInstance(communicator); - _is = new IceInternal.BasicStream(instance, instance.defaultsAndOverrides().defaultEncoding, true, false); - initialize(data); + initialize(instance, data, instance.defaultsAndOverrides().defaultEncoding, copyData); } public - InputStreamI(Communicator communicator, byte[] data, EncodingVersion v) + InputStreamI(Communicator communicator, byte[] data, EncodingVersion v, boolean copyData) { _communicator = communicator; - IceInternal.Instance instance = IceInternal.Util.getInstance(communicator); - _is = new IceInternal.BasicStream(instance, v, true, false); - initialize(data); + initialize(IceInternal.Util.getInstance(communicator), data, v, copyData); } private void - initialize(byte[] data) + initialize(IceInternal.Instance instance, byte[] data, EncodingVersion v, boolean copyData) { + if(copyData) + { + _is = new IceInternal.BasicStream(instance, v, true, false); + _is.resize(data.length, true); + IceInternal.Buffer buf = _is.getBuffer(); + buf.b.position(0); + buf.b.put(data); + buf.b.position(0); + } + else + { + _is = new IceInternal.BasicStream(instance, v, data); + } _is.closure(this); - _is.resize(data.length, true); - IceInternal.Buffer buf = _is.getBuffer(); - buf.b.position(0); - buf.b.put(data); - buf.b.position(0); } public Communicator |