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