Closed
Description
Version:
Debian clang version 18.1.6 (++20240518023133+1118c2e05e67-1~exp1~20240518143227.130)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(test CXX)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_executable(test test.cpp)
test.cpp
#include <cstdlib>
int main(int argc, char** argv)
{
char** p = nullptr;
free(p);
free((void*) p);
free(static_cast<void*>(p));
}
Recipe:
cmake -B build -S .
run-clang-tidy-18 -p build -checks="-*,bugprone-multi-level-implicit-pointer-conversion"
Output:
Enabled checks:
bugprone-multi-level-implicit-pointer-conversion
clang-tidy-18 -checks=-*,bugprone-multi-level-implicit-pointer-conversion -p=build /home/firma/devel/test/test.cpp
/home/firma/devel/test/test.cpp:6:8: warning: multilevel pointer conversion from 'char **' to 'void *', please use explicit cast [bugprone-multi-level-implicit-pointer-conversion]
6 | free(p);
| ^
/home/firma/devel/test/test.cpp:8:16: warning: multilevel pointer conversion from 'char **' to 'void *', please use explicit cast [bugprone-multi-level-implicit-pointer-conversion]
8 | free((void*) p);
| ^
/home/firma/devel/test/test.cpp:10:27: warning: multilevel pointer conversion from 'char **' to 'void *', please use explicit cast [bugprone-multi-level-implicit-pointer-conversion]
10 | free(static_cast<void*>(p));
| ^
3 warnings generated.
I don't understand why I get the warning here, in addition the suggested ways to "improve" the code using a cast don't work.