Skip to content

clang-tidy: bugprone-multi-level-implicit-pointer-conversion it too noisy for void* conversions #93959

Closed
@t-b

Description

@t-b

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.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions