[fpc-devel] move(xx, ansistring[1] versus ansistring, len)
Martin Friebe
fpc at mfriebe.de
Mon May 12 23:27:08 CEST 2008
Hi,
I am trying to find some info on how I can use move to archive the
following:
I am looking for an equal replacement of
move(somepchar^, ansi_str_dest[1], len)
The problem with ansi_str_dest[1] is that if the above call happens with
a len of 0, and an ansi string with 0 length => this leads to a range
check exception.
SetLength(as,0); copy(src^, as[1], 0);
Accessing the first of zero characters => range check.
( It will work without range-checking, since whatever address is
returned by [1] is never accessed )
I could prefix it with "if length(dest) > 0 then ", but I would prefer
something less noticeable...
I could do
SetLength(as,0); copy(src^, as, 0);
But from looking at the assembler produced during compilation, this does
not check for fpc_ansistr_unique. Same for any type casting to PChar.
Anyone any idea?
Thanks
Martin
More information about the fpc-devel
mailing list