The analyzer detected a potential error: one of the switch() operator's branches never gets control. The reason is that the switch() operator's argument cannot accept the value defined in the case operator.
Consider this sample:
char ch = strText[i]; switch (ch) { case '<': strHTML += "<"; bLastCharSpace = FALSE; nNonbreakChars++; break; case '>': strHTML += ">"; bLastCharSpace = FALSE; nNonbreakChars++; break; case 0xB7: case 0xBB: strHTML += ch; strHTML += "<wbr>"; bLastCharSpace = FALSE; nNonbreakChars = 0; break; ... }
The branch following "case 0xB7:" and "case 0xBB:" in this code will never get control. The 'ch' variable has the 'char' type and therefore the range of its values is [-128..127]. The comparisons "ch == 0xB7" and "ch==0xBB" will always be false. To make the code correct, we must cast the 'ch' variable to the 'unsigned char' type:
unsigned char ch = strText[i]; switch (ch) { ... case 0xB7: case 0xBB: strHTML += ch; strHTML += "<wbr>"; bLastCharSpace = FALSE; nNonbreakChars = 0; break; ... }
This diagnostic is classified as:
|
You can look at examples of errors detected by the V551 diagnostic. |