Hi,
we are developing database application in Embarcadero Delphi XE using DOA 4.1.2.2. It worked fine for years. However after upgrading to Oracle 19 we are experiencing problems with corrupting (some) numbers passed as bind variables on client machines with AMD processor. We have traced down this error to be issue concering OCI function OCINumberFromReal when called from pascal code. We have tried to replicate the error using Visual C but it worked without any problem. This error can only be reproduced using Embarcadero Delphi or Free Pascal.
Here is a sample code demonstrating this bug using Embarcadero and plain oci library:
Sample code

When converting for example 369.0 number to internal Oracle representation we are excpecting a following result
SQL Query
select dump(369.0) from dual
Result:
Typ=2 Len=3: 194,4,70
as described in Oracle documentation

The example program result is:
3,194,4,70 (correct) when executing on machine with Intel processor or OCI version below 19
4,194,4,69,101 (wrong) – when executing on OCI 19 or newer and AMD processor - corrupts number passed to database!

We have created a service request at Oracle Support page but they seem to blame pascal - not their OCI.
That's why I am posting here. Does anybody experienced similiar issue? Is this strictly a pascal-dll call problem? Can anybody suggest any compiler settings that can help here?

Regards,
Marek

Note: Problem can be also observed on different number as 193.0, 194.0 but not on 191.0 for example.