[clang-tidy] Issues with C++17 structured bindings

Hello,

Using clang-tidy-12, I’m getting false warnings when using structured bindings. There can actually be a variety of issues, but here is a very small example I’ve narrowed it down to:

auto [ptr, num] = std::make_tuple(malloc(1), 1);
free(ptr);

For which I get the following warning:

/tmp/test.cpp:7:5: warning: Potential leak of memory pointed to by ‘._M_head_impl’ [clang-analyzer-unix.Malloc]
free(ptr);
^
/tmp/test.cpp:6:39: note: Memory is allocated
auto [ptr, num] = std::make_tuple(malloc(1), 1);
^
/tmp/test.cpp:7:5: note: Potential leak of memory pointed to by ‘._M_head_impl’
free(ptr);
^

Searching online, I saw that I’m not the first person to encounter such issues (https://stackoverflow.com/questions/62706928/clang-tidy-vs-structured-bindings) but I couldn’t find any solution.

Is this a bug in clang-tidy or am I missing something? Is there anything I can do to solve this other than stopping using structured bindings?

Thanks,
Tamir

Hi,
It seems like its a Clang Static Analyzer checker warns about something.

Could you please send the complete reproducer?
I failed reproducing this.

Regards,
Balazs

The full contents of the file are:

#include <malloc.h>
#include

int main()
{
auto [ptr, num] = std::make_tuple(malloc(1), 1);
free(ptr);

return 0;
}

And the line I run which gives me the above errors is:

clang-tidy test.cpp – --std=c++17

I still failed to reproduce this on 424fe903d4d4b0f52bd4f86f62587efa6561d251 Fri Jul 23 12:51:37.

Please file a ticket on the official Bugzilla tracker about this if you have the necessary information/reproducer.

Try dumping the preprocessed file, that might be different on my system.

Balazs