Commit 4c4f5ccc authored by Michał Kępień's avatar Michał Kępień

Work around an MSVC bug

The assembly code generated by MSVC for at least some signed comparisons
involving atomic variables incorrectly uses unsigned conditional jumps
instead of signed ones.  In particular, the checks in isc_log_wouldlog()
are affected in a way which breaks logging on Windows and thus also all
system tests involving a named instance.  Work around the issue by
assigning the values returned by atomic_load_acquire() calls in
isc_log_wouldlog() to local variables before performing comparisons.
parent 43e11807
Pipeline #38676 canceled with stages
in 38 seconds
......@@ -1454,13 +1454,15 @@ isc_log_wouldlog(isc_log_t *lctx, int level) {
return (false);
}
if (level <= atomic_load_acquire(&lctx->highest_level)) {
int highest_level = atomic_load_acquire(&lctx->highest_level);
if (level <= highest_level) {
return (true);
}
if (atomic_load_acquire(&lctx->dynamic) &&
level <= atomic_load_acquire(&lctx->debug_level))
{
return (true);
if (atomic_load_acquire(&lctx->dynamic)) {
int debug_level = atomic_load_acquire(&lctx->debug_level);
if (level <= debug_level) {
return (true);
}
}
return (false);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment