fcl-db: base: TBlobField.GetAsString returns uninitialized Result for blob Size=0. Bug #28113

git-svn-id: trunk@30881 -
This commit is contained in:
lacak 2015-05-18 06:39:32 +00:00
parent d5570fb4c4
commit 5c9d5cf896

View File

@ -2813,7 +2813,7 @@ function TBlobField.GetAsString: string;
var var
Stream : TStream; Stream : TStream;
Len : Integer; Len : Integer;
R : String; S : String;
begin begin
Stream := GetBlobStream(bmRead); Stream := GetBlobStream(bmRead);
@ -2821,18 +2821,20 @@ begin
with Stream do with Stream do
try try
Len := Size; Len := Size;
SetLength(R, Len); SetLength(S, Len);
if Len > 0 then if Len > 0 then
begin begin
ReadBuffer(R[1], Len); ReadBuffer(S[1], Len);
if not Transliterate then if not Transliterate then
Result:=R Result := S
else else
begin begin
SetLength(Result,Len); SetLength(Result, Len);
DataSet.Translate(@R[1],@Result[1],False); DataSet.Translate(@S[1],@Result[1],False);
end;
end; end;
end
else
Result := '';
finally finally
Free; Free;
end end
@ -2929,7 +2931,7 @@ end;
procedure TBlobField.SetAsString(const AValue: string); procedure TBlobField.SetAsString(const AValue: string);
var var
Len : Integer; Len : Integer;
R : String; S : String;
begin begin
with GetBlobStream(bmWrite) do with GetBlobStream(bmWrite) do
@ -2938,13 +2940,13 @@ begin
if (Len>0) then if (Len>0) then
begin begin
if Not Transliterate then if Not Transliterate then
R:=AValue S:=AValue
else else
begin begin
SetLength(R,Len); SetLength(S,Len);
Len:=Dataset.Translate(@AValue[1],@R[1],True); Len:=DataSet.Translate(@AValue[1],@S[1],True);
end; end;
WriteBuffer(R[1], Len); WriteBuffer(S[1], Len);
end; end;
finally finally
Free; Free;