THRIFT-5765 Extra override for WriteBinary() to avoid unnecessary memory allocations when using COM types
Client: Delphi
Patch: JensG
diff --git a/lib/delphi/src/Thrift.Protocol.Compact.pas b/lib/delphi/src/Thrift.Protocol.Compact.pas
index 80f1ce5..a8ad53a 100644
--- a/lib/delphi/src/Thrift.Protocol.Compact.pas
+++ b/lib/delphi/src/Thrift.Protocol.Compact.pas
@@ -176,6 +176,7 @@
     procedure WriteI64( const i64: Int64); override;
     procedure WriteDouble( const dub: Double); override;
     procedure WriteBinary( const b: TBytes); overload; override;
+    procedure WriteBinary( const bytes : IThriftBytes); overload; override;
     procedure WriteUuid( const uuid: TGuid); override;
 
   private  // unit visible stuff
@@ -542,6 +543,14 @@
   Transport.Write( b);
 end;
 
+
+procedure TCompactProtocolImpl.WriteBinary( const bytes : IThriftBytes);
+begin
+  WriteVarint32( Cardinal(bytes.Count));
+  Transport.Write( bytes.QueryRawDataPtr, 0, bytes.Count);
+end;
+
+
 procedure TCompactProtocolImpl.WriteUuid( const uuid: TGuid);
 var network : TGuid;  // in network order (Big Endian)
 begin