On Sat, May 28, 2011 at 16:08, Martin <laza...@mfriebe.de> wrote: > I was thinking it would be cool to have something like range-checks, but for > those strings. > > Ideally, the string would be flagged, and other code trying to access it > would check this. But that would mean that all units, packages everything > would need awareness, and had to be compiled with support for the flag.... > Not really practical. > > However at least some test would probably work. > If compiled with -Cc (Check Constant string param) or whatever compiler > option it would be, then the code in Foo could have checks. > > If foo would copy the value of s (only the address: @s[0], not the string) > and increase the ref-count of s (it still is a pointer to the original s), > then Foo could check on exit. > If anyone modified s, then copy-on-write would have kicked in. either the > address in s, or the ref count would have changed. > > That would allow to give at least a warning that something wrong was done. >
Perhaps an easier thing to do is to make const string param optimization controllable by compiler switch and/or directive. This way, users who prefer safe behavior, can get it, and those who are willing to take a risk still get a (weaker) tool to detect the error -- by checking if the program works with the switch but crashes without it. -- Alexander S. Klenin _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel