[fpc-devel] "Default" discussion for SmartPointers etc

Michael Van Canneyt michael at freepascal.org
Thu Jul 28 13:30:52 CEST 2016



On Thu, 28 Jul 2016, Maciej Izak wrote:

> 2016-07-28 12:40 GMT+02:00 Michael Van Canneyt <michael at freepascal.org>:
>
>> I don't see how you can solve nullable var parameters in native code.
>>
>
> I'd like to present how TNullable<T> works in my implementation (compilable
> and runable program ;)

Yes, I remember you demonstrate it. But I think there are some caveats.

>
> === code begin ===
> procedure Test1(var x: Integer);
> begin
>  x := 1;
> end;

Assume a is null before the call to test1:

   test1(a);

1. What happens if this procedure is empty, i.e. no write is performed ?
    (or it is performed conditionally)
    On return, is a null or not ?

2. Assume your variable is null before the call to Test1.
    What is the value on entry into Test1 ? i.e. what happens if

    begin
      if X=0 then
        x:=1
      else
        X:=23;
    end

3. How do you detect an actual write ?

4. What happens if Test1 is an external C procedure ?

Michael.



More information about the fpc-devel mailing list