mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-17 08:54:41 +00:00
48aa13f286
With gcc < 4.7, when HAProxy is built with threads, the macros HA_ATOMIC_CAS/XCHG/STORE relies on the legacy __sync builtins. These macros are slightly complicated than the versions relying on the '_atomic' builtins. Internally, some local variables are defined, prefixed with '__' to avoid name clashes with the caller. On the other hand, the macros HA_ATOMIC_UPDATE_MIN/MAX call HA_ATOMIC_CAS. Some local variables are also definied in these macros, following the same naming rule as below. The problem is that '__new' variable is used in HA_ATOMIC_MIN/_MAX and in HA_ATOMIC_CAS. Obviously, the behaviour is undefined because '__new' in HA_ATOMIC_CAS is left uninitialized. Unfortunatly gcc fails to detect this error. To fix the problem, all internal variables to macros are now suffixed with name of the macros to avoid clashes (for instance, '__new_cas' in HA_ATOMIC_CAS). This patch must be backported in 1.8. |
||
---|---|---|
.. | ||
common | ||
import | ||
proto | ||
types |