Examples of errors detected by the V542 diagnostic
V542. Suspicious type cast: 'Type1' to ' Type2'. Consider inspecting the expression.
Miranda IM
V542 Consider inspecting an odd type cast: 'char *' to 'char'. clist_modern modern_toolbar.cpp 586
static void
sttRegisterToolBarButton(..., char * pszButtonName, ...)
{
....
if ((BYTE)pszButtonName)
tbb.tbbFlags=TBBF_FLEXSIZESEPARATOR;
else
tbb.tbbFlags=TBBF_ISSEPARATOR;
....
}
This code is suspicious. In fact, we check that the string address is multiple of 256. But what the programmer actually wanted to write in the condition is a mystery. I'm not sure that this is exactly an error. There are similar games with pointers - that is, something else is stored in pointers. This code should be cited simply as an example of a suspicious code fragment that needs checking.
Platinum
V542 Consider inspecting an odd type cast: 'bool' to 'char *'. PltCtrlPoint.cpp:1617
NPT_Result PLT_CtrlPoint::ProcessSubscribeResponse(...)
{
....
bool subscription = (request.GetMethod().ToUppercase() == "SUBSCRIBE");
....
NPT_String prefix = NPT_String::Format("
PLT_CtrlPoint::ProcessSubscribeResponse %ubscribe for
service \"%s\" (result = %d, status code = %d)",
(const char*)subscription?"S":"Uns", // <=
(const char*)service->GetServiceID(),
res,
response?response->GetStatusCode():0);
....
}