THRIFT-1621 Delphi Memory leaks
Patch: Jens Geyer
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1346814 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/delphi/src/Thrift.Protocol.JSON.pas b/lib/delphi/src/Thrift.Protocol.JSON.pas
index 3c54386..2cc4bbd 100644
--- a/lib/delphi/src/Thrift.Protocol.JSON.pas
+++ b/lib/delphi/src/Thrift.Protocol.JSON.pas
@@ -62,7 +62,7 @@
// This base context does nothing.
TJSONBaseContext = class
protected
- FProto : IJSONProtocol;
+ FProto : Pointer; // weak IJSONProtocol;
public
constructor Create( const aProto : IJSONProtocol);
procedure Write; virtual;
@@ -97,7 +97,7 @@
// Holds up to one byte from the transport
TLookaheadReader = class
protected
- FProto : IJSONProtocol;
+ FProto : Pointer; // weak IJSONProtocol;
constructor Create( const aProto : IJSONProtocol);
private
@@ -335,7 +335,7 @@
constructor TJSONProtocolImpl.TJSONBaseContext.Create( const aProto : IJSONProtocol);
begin
inherited Create;
- FProto := aProto;
+ FProto := Pointer(aProto);
end;
@@ -368,7 +368,7 @@
begin
if FFirst
then FFirst := FALSE
- else FProto.Transport.Write( COMMA);
+ else IJSONProtocol(FProto).Transport.Write( COMMA);
end;
@@ -376,7 +376,7 @@
begin
if FFirst
then FFirst := FALSE
- else FProto.ReadJSONSyntaxChar( COMMA[0]);
+ else IJSONProtocol(FProto).ReadJSONSyntaxChar( COMMA[0]);
end;
@@ -396,8 +396,8 @@
end
else begin
if FColon
- then FProto.Transport.Write( COLON)
- else FProto.Transport.Write( COMMA);
+ then IJSONProtocol(FProto).Transport.Write( COLON)
+ else IJSONProtocol(FProto).Transport.Write( COMMA);
FColon := not FColon;
end;
end;
@@ -411,8 +411,8 @@
end
else begin
if FColon
- then FProto.ReadJSONSyntaxChar( COLON[0])
- else FProto.ReadJSONSyntaxChar( COMMA[0]);
+ then IJSONProtocol(FProto).ReadJSONSyntaxChar( COLON[0])
+ else IJSONProtocol(FProto).ReadJSONSyntaxChar( COMMA[0]);
FColon := not FColon;
end;
end;
@@ -427,7 +427,7 @@
constructor TJSONProtocolImpl.TLookaheadReader.Create( const aProto : IJSONProtocol);
begin
inherited Create;
- FProto := aProto;
+ FProto := Pointer(aProto);
FHasData := FALSE;
end;
@@ -438,7 +438,7 @@
then FHasData := FALSE
else begin
SetLength( FData, 1);
- FProto.Transport.ReadAll( FData, 0, 1);
+ IJSONProtocol(FProto).Transport.ReadAll( FData, 0, 1);
end;
result := FData[0];
end;
@@ -448,7 +448,7 @@
begin
if not FHasData then begin
SetLength( FData, 1);
- FProto.Transport.ReadAll( FData, 0, 1);
+ IJSONProtocol(FProto).Transport.ReadAll( FData, 0, 1);
FHasData := TRUE;
end;
result := FData[0];