Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This noncompliant code example can result in a divide-by-zero error during the division of the signed operands sl1 and sl2.

Code Block
bgColor#FFcccc
langc
signed long sl1, sl2, result;

/* Initialize sl1 and sl2 */

result = sl1 / sl2;

...

This compliant solution tests the suspect division operation to guarantee there is no possibility of divide-by-zero errors or signed overflow.

Code Block
bgColor#ccccff
langc
signed long sl1, sl2, result;

/* Initialize sl1 and sl2 */

if ( (sl2 == 0) || ( (sl1 == LONG_MIN) && (sl2 == -1) ) ) {
  /* handle error condition */
}
else {
  result = sl1 / sl2;
}

...

This noncompliant code example can result in a divide-by-zero error during the modulo operation on the signed operands sl1 and sl2.

Code Block
bgColor#FFcccc
langc
signed long sl1, sl2, result;

/* Initialize sl1 and sl2 */

result = sl1 % sl2;

...

This compliant solution tests the suspect modulo operation to guarantee there is no possibility of a divide-by-zero error or an overflow error.

Code Block
bgColor#ccccff
langc
signed long sl1, sl2, result;

/* Initialize sl1 and sl2 */

if ( (sl2 == 0 ) || ( (sl1 == LONG_MIN) && (sl2 == -1) ) ) {
  /* handle error condition */
}
else {
  result = sl1 % sl2;
}

...