You are not logged in.
Hi,
I made a trimmed-down version of the 26 - RESTful ORM example with Lazarus 1.8.0/Free Pascal Compiler 3.0.4 under Windows 10 64bit (target windows x86_64).
The server component runs fine. The client component creates a SIGSEV when doing Client.Add(). It looks like the pointer magic
Props := PPointer(PtrInt(aTable)+vmtAutoTable)^;
in mORMot.TSQLModel.GetTableIndex() returns a pointer into Nirvana: Props is filled with random content.
Delphi 10.1 creates a working executable, though.
SynCommons.VarRecToTempUTF8() seems to produce a similar issue in the vtClass branch of the case statement.
Is there a compiler switch to make the pointer magic work with Free Pascal or any other solution for this issue?
Best regards,
Boris
Last edited by gothbert (2017-12-18 11:01:21)
Offline
@gothbert
I just checked with FPC 3.0.4/Laz 1.8.0 on win64 with win64 executables, and they run perfect !
I do not know how you used the dpr files to build the projects with Lazarus, but here's is how I make it work:
In Lazarus, select open project and open the dpr-file. Select "simple project" when Lazarus asks you to create a project.
In project options (compiler options / parsing), set mode to Delphi.
Offline
Thank you, AOG, for the quick reply!
Using your guidance, I made the sample program run. With the same settings, mine didn't. Comparison showed that I used the AutoFree pattern for adding records and that fails under FPC. I had better studied the fine manual more thoroughly because the issue is described there. Using the try/finally pattern or assign the result of the AutoFree() call to a variable does the job.
Offline