mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-06 13:33:02 +00:00
When threads are disabled, HA_ATOMIC_CAS() becomes a simple compound expression. However this expression presents a problem, which is that its arguments are evaluated multiple times, once for the comparison and once again for the assignement. This presents a risk of performing some side-effect operations twice in the non-threaded case (e.g. in case of auto-increment or function return). The macro was rewritten using local copies for arguments like the other macros do. Fortunately a complete inspection of the code indicates that this case currently never happens. It was however responsible for the strict-aliasing warning emitted when building fd.c without threads but with 64-bit CAS. This may be backported as far as 1.8 though it will not fix any existing bug and is more of a long-term safety measure in case a future fix would depend on this behavior. |
||
---|---|---|
.. | ||
common | ||
import | ||
proto | ||
types |