I've reported this as an FPC bug: http://bugs.freepascal.org/view.php?id=13820
Cheers, Bruce. Bruce Tulloch wrote: > I think I've nailed and example of the problem; when Copy() is called > with the result of another Copy() the reference count for the returned > array is not managed correctly when compiled with -MDelphi. > > A trivial example program, copytest.pas: > > program copytest; > > var > S, D : array of Integer; > > begin > SetLength(S,4000); > D := Copy(Copy(S)); > end. > > which when compiled with: > > fpc -MDelphi -gl -gh copytest.pas > > and run produces the following: > > lenin:$ ./copytest > Heap dump by heaptrc unit > 3 memory blocks allocated : 48024/48024 > 2 memory blocks freed : 32016/32016 > 1 unfreed memory blocks : 16008 > True heap size : 262144 > True free heap : 246048 > Should be : 246072 > Call trace for block $B7F4BF50 size 16008 > $080480EA main, line 8 of copytest.pas > $080657A7 > > I hope this helps diagnose what's happening here. > > Note that if compiled without -MDelphi it works correctly but in our > case we need to use -MDelphi because our application is also built > with Delphi and Kylix3. > > Cheers, Bruce. > > Jonas Maebe wrote: > >> On 25 May 2009, at 10:30, Bruce Tulloch wrote: >> >> >>> PS: does the attribute "compilerproc" mean the function is defined to be >>> called by the compiler implicitly? We have rebuilt the FPC RTL with >>> debug enabled to further diagnose what's happening here (which is why we >>> came across it). >>> >> It means that the procedure becomes invisible to regular Pascal code, >> and that it gets a particular internal symbol name. Such routines are >> indeed called implicitly by the compiler for various purposes. >> >> >> Jonas >> _______________________________________________ >> fpc-pascal maillist - fpc-pascal@lists.freepascal.org >> http://lists.freepascal.org/mailman/listinfo/fpc-pascal >> > > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal > _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal