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
diff --git a/lib/java/src/org/apache/thrift/TDeserializer.java b/lib/java/src/org/apache/thrift/TDeserializer.java
index dbefcd8..803d9c6 100644
--- a/lib/java/src/org/apache/thrift/TDeserializer.java
+++ b/lib/java/src/org/apache/thrift/TDeserializer.java
@@ -68,6 +68,7 @@
trans_.reset(bytes);
base.read(protocol_);
} finally {
+ trans_.clear();
protocol_.reset();
}
}
@@ -108,6 +109,7 @@
} catch (Exception e) {
throw new TException(e);
} finally {
+ trans_.clear();
protocol_.reset();
}
}
@@ -228,6 +230,7 @@
} catch (Exception e) {
throw new TException(e);
} finally {
+ trans_.clear();
protocol_.reset();
}
}
@@ -284,6 +287,7 @@
} 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 13b5f83..2530dcc 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 @@
endPos_ = offset + length;
}
+ public void clear() {
+ buf_ = null;
+ }
+
@Override
public void close() {}