Browse Source

* Fixed bug #8477

git-svn-id: trunk@6801 -
joost 18 years ago
parent
commit
5f0bd73dec
1 changed files with 10 additions and 4 deletions
  1. 10 4
      packages/fcl-db/src/fields.inc

+ 10 - 4
packages/fcl-db/src/fields.inc

@@ -1052,20 +1052,26 @@ end;
 
 
 procedure TStringField.SetAsString(const AValue: string);
 procedure TStringField.SetAsString(const AValue: string);
 
 
-Const NullByte : char = #0;
-
 var Buf      : TStringFieldBuffer;
 var Buf      : TStringFieldBuffer;
 
 
 begin
 begin
   IF Length(AValue)=0 then
   IF Length(AValue)=0 then
-    SetData(@NullByte)
+    begin
+    Buf := #0;
+    SetData(@buf);
+    end
   else if FTransliterate then
   else if FTransliterate then
     begin
     begin
     DataSet.Translate(@AValue[1],Buf,True);
     DataSet.Translate(@AValue[1],Buf,True);
     SetData(@buf);
     SetData(@buf);
     end
     end
   else
   else
-    SetData(@AValue[1]);
+    begin
+    // The data is copied into the buffer, since some TDataset descendents copy
+    // the whole buffer-length in SetData. (See bug 8477)
+    Buf := AValue;
+    SetData(@Buf);
+    end;
 end;
 end;
 
 
 procedure TStringField.SetVarValue(const AValue: Variant);
 procedure TStringField.SetVarValue(const AValue: Variant);