- Cast `&t` to `LPCPROPSHEETPAGEW` in `CreatePropertySheetPageW` to fix incompatible pointer type error.
- Use `SendMessageW` instead of custom `SendMsg` for `WM_GETFONT` to avoid truncating the `LRESULT` down to a 32-bit `UINT` before casting to `HFONT`, which previously triggered a `-Wint-to-pointer-cast` warning on 64-bit builds.
- Cast `&srcData` and `&data` (type `UCHAR**`) to `void**` in `CreateDIBSection` calls to resolve incompatible pointer type errors.
Changed the types of `read_size` and `ret_size` from `UINT` to `DWORD` across several functions (`SuOpenAdapter`, `SuEnumAdapters`, `SuGetAdapterList`, and `SuInitEx`) in `SeLowUser.c` to resolve compiler warnings (`-Wincompatible-pointer-types`). The Windows API functions `DeviceIoControl` and `ReadFile` expect an `LPDWORD` (a pointer to an `unsigned long`) for their returned byte count parameters, whereas `UINT` maps to `unsigned int`.
Changed the type of `retsize` from `UINT` to `DWORD` in `Proto_Win7.c` to resolve a compiler warning (`-Wincompatible-pointer-types`). The Windows API function `WriteFile` expects an `LPDWORD` (a pointer to an `unsigned long`) for its `lpNumberOfBytesWritten` parameter, whereas `UINT` maps to `unsigned int`.
Changed the type of `size` from `UINT` to `ULONG` in `BridgeWin32.c` to resolve a compiler warning (`-Wincompatible-pointer-types`). The `PacketGetAdapterNames` function expects a `PULONG` (a pointer to an `unsigned long`) for its second parameter, whereas `UINT` maps to `unsigned int`.
Changed the type of `read_size` from `UINT` to `DWORD` in `Win32.c` to resolve a compiler warning (`-Wincompatible-pointer-types`). The Windows API function `ReadFile` expects an `LPDWORD` (a pointer to an `unsigned long`) for the `lpNumberOfBytesRead` parameter, while `UINT` maps to `unsigned int`.
The Darwin branch of the cpu_features selection reads:
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" AND NOT CMAKE_SYSTEM_NAME MATCHES "^(arm64|x86_64)")
The second condition tests CMAKE_SYSTEM_NAME, which is "Darwin" inside this
branch and so never matches ^(arm64|x86_64), where it plainly means
CMAKE_SYSTEM_PROCESSOR. The NOT is therefore always true, and the branch the
comment says we "should not reach" is the one always taken. The FreeBSD
branch three lines above gets this right.
The effect is currently masked -- macOS has no sys/auxv.h, so the
HAVE_SYS_AUXV branch already defines SKIP_CPU_FEATURES first -- but the
condition is still wrong and should behave as written if that check ever
changes.
Explicitly cast the `UINT *` pointer to `(volatile LONG *)` before passing it to `InterlockedIncrement` and `InterlockedDecrement` in `src/Mayaqua/Win32.c`.
This resolves a build error where passing a `UINT *` (unsigned int *) was flagged as an incompatible pointer type, because the APIs expect a `volatile LONG *` (volatile long *).
Change the type of the `thread_id` variable from `DWORD` to `UINT` in `src/Mayaqua/Win32.c`.
This resolves a build error where passing `&thread_id` to `_beginthreadex` was flagged as an incompatible pointer type, because the function expects a pointer to an `unsigned int` rather than a pointer to an `unsigned long` (`DWORD`).
Change the type of the `retsize` variable from `UINT` to `DWORD` in both `Win32SetFolderCompressW` and `Win32SetFolderCompress` in `src/Mayaqua/Win32.c`.
This resolves a build error where passing `&retsize` to `DeviceIoControl` was flagged as an incompatible pointer type, because the API expects an `LPDWORD` (pointer to `unsigned long`) rather than a pointer to `unsigned int`.
Explicitly cast the `IP_ADAPTER_ADDRESSES_XP *` pointer to `PIP_ADAPTER_ADDRESSES` when calling `GetAdaptersAddresses` in `src/Mayaqua/Network.c`.
This resolves build errors with modern Windows SDKs (e.g., 10.0.26100.0) where `PIP_ADAPTER_ADDRESSES` resolves to `IP_ADAPTER_ADDRESSES_LH *`, which compilers like Clang flag as an incompatible pointer type.
The Lock/Unlock mechanism on Unix is a manual, hand-coded implementation
of PTHREAD_MUTEX_RECURSIVE. We avoid using the PTHREAD_MUTEX_RECURSIVE
directly because it exhibits critical bugs, such as deadlocks on
certain older systems(Linux, Solaris, or macOS).
followup #2219
Define ATTRIBUTE_NO_TSAN as __attribute__((no_sanitize(\"thread\")))
when building with thread sanitizer enabled. Falls back to empty
definition when thread sanitizer is not active or not supported
compiler.
Left shifting UCHAR promotes it to a signed integer. When the
value is >= 128 and shifted by 24, the result sets the sign bit,
causing undefined behavior. Fixes it by explicit casting to UINT.
The password input handling on Linux to match the behavior on Windows.
It allows deleting characters using the Backspace, Delete, and
Left arrow keys, and correctly handles other input sequences are handling
correctly.
Previously, The address of a local stack variable was passed to a new
thread. Fix dangling pointer by switching to dynamic allocation.
This problem is also known as CVE-2025-25568.