From 34c2dbd545c32dde632f95e376830f49457ac2aa Mon Sep 17 00:00:00 2001 From: Bryan Duxbury Date: Wed, 26 Jan 2011 18:40:30 +0000 Subject: [PATCH] THRIFT-1041. java: TDeserializer holds onto a reference of the array it reads after it is done deserializing This patch makes sure that after using the bytes passed in, no references are retained. git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1063820 13f79535-47bb-0310-9956-ffa450edef68 --- lib/java/src/org/apache/thrift/TDeserializer.java | 4 ++++ .../org/apache/thrift/transport/TMemoryInputTransport.java | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/lib/java/src/org/apache/thrift/TDeserializer.java b/lib/java/src/org/apache/thrift/TDeserializer.java index dbefcd84..803d9c61 100644 --- a/lib/java/src/org/apache/thrift/TDeserializer.java +++ b/lib/java/src/org/apache/thrift/TDeserializer.java @@ -68,6 +68,7 @@ public class TDeserializer { trans_.reset(bytes); base.read(protocol_); } finally { + trans_.clear(); protocol_.reset(); } } @@ -108,6 +109,7 @@ public class TDeserializer { } catch (Exception e) { throw new TException(e); } finally { + trans_.clear(); protocol_.reset(); } } @@ -228,6 +230,7 @@ public class TDeserializer { } catch (Exception e) { throw new TException(e); } finally { + trans_.clear(); protocol_.reset(); } } @@ -284,6 +287,7 @@ public class TDeserializer { } catch (Exception e) { throw new TException(e); } finally { + trans_.clear(); protocol_.reset(); } } diff --git a/lib/java/src/org/apache/thrift/transport/TMemoryInputTransport.java b/lib/java/src/org/apache/thrift/transport/TMemoryInputTransport.java index 13b5f834..2530dcc3 100644 --- a/lib/java/src/org/apache/thrift/transport/TMemoryInputTransport.java +++ b/lib/java/src/org/apache/thrift/transport/TMemoryInputTransport.java @@ -45,6 +45,10 @@ public final class TMemoryInputTransport extends TTransport { endPos_ = offset + length; } + public void clear() { + buf_ = null; + } + @Override public void close() {} -- 2.17.1