diff --git a/packages/fcl-db/src/base/bufdataset.pas b/packages/fcl-db/src/base/bufdataset.pas index 87acd3e67b..0cb06b1f3f 100644 --- a/packages/fcl-db/src/base/bufdataset.pas +++ b/packages/fcl-db/src/base/bufdataset.pas @@ -1,6 +1,6 @@ { This file is part of the Free Pascal run time library. - Copyright (c) 1999-2013 by Joost van der Sluis and other members of the + Copyright (c) 1999-2014 by Joost van der Sluis and other members of the Free Pascal development team BufDataset implementation @@ -2066,7 +2066,7 @@ end; function TCustomBufDataset.LoadBuffer(Buffer : TRecordBuffer): TGetResult; var NullMask : pbyte; - i : longint; + x : longint; CreateBlobField : boolean; BufBlob : PBufBlobField; @@ -2081,30 +2081,21 @@ begin Exit; end; - if IsUniDirectional then - begin - // release blob buffers before new record is loaded - // in order to save memory - for i := 0 to high(FBlobBuffers) do - FreeBlobBuffer(FBlobBuffers[i]); - SetLength(FBlobBuffers, 0); - end; - NullMask := pointer(buffer); fillchar(Nullmask^,FNullmaskSize,0); inc(buffer,FNullmaskSize); - for i := 0 to FieldDefs.Count-1 do + for x := 0 to FieldDefs.Count-1 do begin - if not LoadField(FieldDefs[i], buffer, CreateBlobField) then - SetFieldIsNull(NullMask,i) + if not LoadField(FieldDefs[x],buffer,CreateBlobField) then + SetFieldIsNull(NullMask,x) else if CreateBlobField then begin BufBlob := PBufBlobField(Buffer); BufBlob^.BlobBuffer := GetNewBlobBuffer; - LoadBlobIntoBuffer(FieldDefs[i], BufBlob); + LoadBlobIntoBuffer(FieldDefs[x],BufBlob); end; - inc(buffer, GetFieldSize(FieldDefs[i])); + inc(buffer,GetFieldSize(FieldDefs[x])); end; Result := grOK; end;