...
This noncompliant code example using atomic integers can result in unsigned integer overflow wrapping:
Code Block | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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
...