Am 10.02.23 um 23:07 schrieb Antonio Quartulli:
Hi,

On 10/02/2023 20:54, Selva Nair wrote:

    I also discussed this with Lev and, despite this being different from
    what we do in the *nix world (where decimal representations make sense     for file descriptors), it seems to be the right hting to do on Windows
    when using HANDLEs (shrug).


Windows kernel handles are very much "like" fds though the handle table also covers processes, threads,  semaphores etc. They are not pointers, are generally smallish numbers or ~0 (== -1). But not as small as fds in the Unix/Linux world --- mainly because several objects share the name space and they have to be multiples of 4 for some arcane reason.

The problem here was not printing as "decimal" but as "unsigned decimal". Use of the latter would have caused the same issue on Linux too.

Using hex is a compromise here as handles are defined as "unsigned ints" of the same size as pointers. So PRIdPTR somehow looks improper though I would have chosen that.

Given your explanation then it sounds like we should truly use PRIdPTR.
Wouldn't you agree Lev?

Not really. The type is still an unsigned type and while -1 is used to denote an invalid HANDLE, the type itself is unsigned, so using a signed printf format specifier like PRIdPTR will probably give us a warning about using about signed vs unsigned.

Arne



_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to