end;\r
\r
procedure TBinaryProtocolImpl.WriteBinary( const b: TBytes);\r
+var iLen : Integer;\r
begin\r
- WriteI32( Length(b));\r
- FTrans.Write(b, 0, Length( b));\r
+ iLen := Length(b);\r
+ WriteI32( iLen);\r
+ if iLen > 0 then FTrans.Write(b, 0, iLen);\r
end;\r
\r
procedure TBinaryProtocolImpl.WriteBool(b: Boolean);\r
begin\r
if FReadBuffer <> nil then\r
begin\r
- got := FReadBuffer.Read( Pointer(@buf[0])^, len );\r
+ if len > 0\r
+ then got := FReadBuffer.Read( Pointer(@buf[off])^, len )\r
+ else got := 0;\r
if got > 0 then\r
begin\r
Result := got;\r
end;\r
\r
ReadFrame;\r
- Result := FReadBuffer.Read( Pointer(@buf[0])^, len );\r
+ if len > 0\r
+ then Result := FReadBuffer.Read( Pointer(@buf[off])^, len)\r
+ else Result := 0;\r
end;\r
\r
procedure TFramedTransportImpl.ReadFrame;\r
\r
procedure TFramedTransportImpl.Write(const buf: TBytes; off, len: Integer);\r
begin\r
- FWriteBuffer.Write( Pointer(@buf[0])^, len );\r
+ if len > 0\r
+ then FWriteBuffer.Write( Pointer(@buf[off])^, len );\r
end;\r
\r
{ TFramedTransport.TFactory }\r