THRIFT-4323 range check errors or NPE in edge cases
Client: Delphi
Patch: Jens Geyer
diff --git a/lib/delphi/src/Thrift.Stream.pas b/lib/delphi/src/Thrift.Stream.pas
index 1d357c3..b6e0cbf 100644
--- a/lib/delphi/src/Thrift.Stream.pas
+++ b/lib/delphi/src/Thrift.Stream.pas
@@ -197,7 +197,9 @@
 
 function TThriftStreamImpl.Read(var buffer: TBytes; offset, count: Integer): Integer;
 begin
-  Result := Read( @buffer[0], Length(buffer), offset, count);
+  if Length(buffer) > 0
+  then Result := Read( @buffer[0], Length(buffer), offset, count)
+  else Result := 0;
 end;
 
 function TThriftStreamImpl.Read( const pBuf : Pointer; const buflen : Integer; offset: Integer; count: Integer): Integer;
@@ -208,7 +210,8 @@
 
 procedure TThriftStreamImpl.Write(const buffer: TBytes; offset, count: Integer);
 begin
-  Write( @buffer[0], offset, count);
+  if Length(buffer) > 0
+  then Write( @buffer[0], offset, count);
 end;
 
 procedure TThriftStreamImpl.Write( const pBuf : Pointer; offset: Integer; count: Integer);