[fpc-devel] rtl_do_close is not called in the embedded and freertos targets

Kostas Michalopoulos badsector at runtimeterror.com
Mon Aug 21 12:00:08 CEST 2023


Hi all,

I was looking at the RTL code to see if the embedded target could be 
used as a workaround for unsupported OSes (e.g. some custom kernel) and 
noticed that there are some global function pointers used as callbacks 
for system-specific functionality - which is neat.

However i also noticed that the do_close procedure in sysfile.inc 
doesn't do anything (it is empty) and nothing calls the rtl_do_close 
callback (the other do_xxx procedures do call the equivalent rtl_do_xxx 
if they are set). I don't have any actual program to test that out, it 
was just something i noticed by reading the code but it seems like a bug 
to me as i can't see a way to close a file handle otherwise.

The code can be seen here:

https://gitlab.com/freepascal.org/fpc/source/-/blob/main/rtl/embedded/sysfile.inc?ref_type=heads#L25

My guess is that the code above should call rtl_do_close defined here:

https://gitlab.com/freepascal.org/fpc/source/-/blob/main/rtl/embedded/system.pp?ref_type=heads#L108

...like it is done in the other procedures in the sysfile.inc file.

FWIW the code for freertos seems to be exactly the same - empty do_close 
despite there being a rtl_do_close callback (which isn't used anywhere).

Kostas


More information about the fpc-devel mailing list