[fpc-devel] move(xx, ansistring[1] versus ansistring, len)
Martin Friebe
martin at hybyte.com
Tue May 13 00:17:17 CEST 2008
move(somepchar^,pchar(ansi_str_dest)^,len);
doesn't check fpc_ansistr_unique. So it works only if ansi_str_dest has
only one reference; or both strings will be modified (because no
copy-on-write happens).
At least, that's what I get to see, if I compile with -al and look at
the assembler.
JoshyFun wrote:
> Hello Martin,
>
> Monday, May 12, 2008, 11:27:08 PM, you wrote:
>
> MF> Hi,
> MF> I am trying to find some info on how I can use move to archive the
> MF> following:
> MF> I am looking for an equal replacement of
> MF> move(somepchar^, ansi_str_dest[1], len)
> [...]
> MF> I could prefix it with "if length(dest) > 0 then ", but I would prefer
> MF> something less noticeable...
>
> I had not checked it but I think you can use the typecasting:
>
> move(somepchar^,pchar(ansi_str_dest)^,len);
>
> as typecasting an ansistring to a pchar should return (repeat "I
> think") a pointer to ansi_str_dest[1], and if length(ansi_str_dest)=0
> then the pointer should be $00000001 :-? which should not raise any
> kind of range check.
>
>
More information about the fpc-devel
mailing list