mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 22:58:50 +01:00
Windows: Silence a spurious warning in the GetAdaptersAddresses cast
GetProcAddress() returns FARPROC, which is (long long int(*)()) on 64-bit Windows: https://msdn.microsoft.com/en-us/library/windows/desktop/ms683212(v=vs.85).aspx But GetAdaptersAddresses() is (long unsigned int(*)()), on both 32-bit and 64-bit Windows: https://docs.microsoft.com/en-us/windows/desktop/api/iphlpapi/nf-iphlpapi-getadaptersaddresses So gcc 8 issues a spurious "incompatible function pointer" warning about the cast to GetAdaptersAddresses_fn_t. Silence this warning by casting to a void function pointer, before the cast to GetAdaptersAddresses_fn_t. This issue is already fixed by 26481 in 0.3.5 and later, by removing the lookup and cast. Fixes bug 27465; bugfix on 0.2.3.11-alpha.
This commit is contained in:
parent
ff1486385a
commit
1570f17f97
2 changed files with 9 additions and 1 deletions
5
changes/bug27465
Normal file
5
changes/bug27465
Normal file
|
@ -0,0 +1,5 @@
|
|||
o Minor bugfixes (compilation):
|
||||
- Silence a spurious compiler warning on the GetAdaptersAddresses
|
||||
function pointer cast. This issue is already fixed by 26481 in
|
||||
0.3.5 and later, by removing the lookup and cast.
|
||||
Fixes bug 27465; bugfix on 0.2.3.11-alpha.
|
|
@ -1492,7 +1492,10 @@ get_interface_addresses_win32(int severity, sa_family_t family)
|
|||
goto done;
|
||||
}
|
||||
|
||||
if (!(fn = (GetAdaptersAddresses_fn_t)
|
||||
/* Cast through a void function pointer, to silence a spurious compiler
|
||||
* warning on 64-bit Windows. This cast is safe, because we are casting to
|
||||
* the correct type for GetAdaptersAddresses(). */
|
||||
if (!(fn = (GetAdaptersAddresses_fn_t)(void(*)(void))
|
||||
GetProcAddress(lib, "GetAdaptersAddresses"))) {
|
||||
log_fn(severity, LD_NET, "Unable to obtain pointer to "
|
||||
"GetAdaptersAddresses");
|
||||
|
|
Loading…
Add table
Reference in a new issue