Versions Compared

Key

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

Section Subclause 6.2.5, paragraph 9, of the C Standard [ISO/IEC 9899:2011] states:

...

This noncompliant code example using atomic integers can result in unsigned integer overflow wrapping:

...

Code Block
bgColor#FFcccc
langc
atomic_int i;
int ui_a;

/* Initialize i, ui_a */

atomic_fetch_add(&i, ui_a);

Compliant Solution

This compliant solution performs a postcondition test to ensure that the result of the unsigned addition operation to i is not less than the operand ui_a:

...

Code Block
bgColor#ccccff
langc
atomic_int i;
int ui_a;
 
/* Initialize ui_a, i */
 
atomic_fetch_add(&i, ui_a);
if (atomic_load(&i) < ui_a) {
  /* handle error condition */
}

Exceptions

...