[fpc-devel] 019605: Safety check for "const s: string" (similar to Range or Overflow checks)

Martin fpc at mfriebe.de
Thu Jun 23 22:36:11 CEST 2011

On 23/06/2011 21:22, Florian Klämpfl wrote:
> May I propose a more generic solution:
> - with some switch (-gc?) a call to checkpointer is inkoved at the end
> of a procedure for const ref. counted types. Together with -gh this
> catches the common case:

Sorry I do not understand?
> {$h+}
> var
>    s : string;
> procedure proc;
>    begin
>      s:='1234';
>    end;
> procedure Foo(const s: string);
>    begin
>      proc;
I assume the below is supposed to be the hidden / automatic check? 
(since the above was the unwarranted change to s)

But what does it test (besides from being an assignment?

>      pbyte(s)^:=1; // force checkpointer call on s for testing purposes
>    end;
> begin
>    setlength(s,10);
>    Foo(s);
> end.
> If this is not enough
> - we can introduce a compiler switch (or reuse an existing) which builds
> a checksum on the relevant data of a const parameter on function entry.
> At function exit, this checksum is checked.

More information about the fpc-devel mailing list