The analyzer detected a potential error: a variable is assigned to itself. Consider this sample:
dst.m_a = src.m_a;
dst.m_b = dst.m_b;
The value of the 'dst.m_b' variable will not change because of the misprint. This is the correct code:
dst.m_a = src.m_a;
dst.m_b = src.m_b;
The analyzer does not produce the warning every time it detects assignment of a variable to itself. This method is often used to suppress compiler-generated warnings. For example:
int Foo(int foo)
{
UNREFERENCED_PARAMETER(foo);
return 1;
}
The UNREFERENCED_PARAMETER macro is defined in the WinNT.h file in the following way:
#define UNREFERENCED_PARAMETER(P) \
{ \
(P) = (P); \
}
However, the PVS-Studio analyzer knows about such cases and will not generate the V570 warning on assignment like this:
(foo) = (foo);