DB
Size: a a a
DB
DM
DB
DM
DB
DB
DM
DB
DM
DB
DM
DB
DB
DB
DM
DB
DM
DB
DB
procedure FastSetString(var s: RawUTF8; p: pointer; len: PtrInt);
var r: PAnsiChar;
sr: PStrRec;
begin
if len<=0 then
r := nil else begin
GetMem(r,len+(STRRECSIZE+4));
sr := pointer(r);
sr^.codePage := CP_UTF8;
sr^.elemSize := 1;
sr^.refCnt := 1;
sr^.length := len;
inc(PByte(sr),STRRECSIZE);
PCardinal(PAnsiChar(sr)+len)^ := 0; // ensure ends with four #0
r := pointer(sr);
if p<>nil then
{$ifdef FPC}Move{$else}MoveFast{$endif}(p^,sr^,len);
end;
{$ifdef FPC}Finalize(s){$else}s := ''{$endif};
pointer(s) := r;
end;
DB