From 47fc73d694f02adc5508a0af1510da63ac14991a Mon Sep 17 00:00:00 2001 From: daan Date: Fri, 6 Sep 2019 11:51:22 -0700 Subject: [PATCH] fix c++ compilation; make default output non-atomic --- src/options.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/options.c b/src/options.c index 55b9ae5c..38400831 100644 --- a/src/options.c +++ b/src/options.c @@ -150,16 +150,18 @@ static void mi_out_stderr(const char* msg) { // Default output handler // -------------------------------------------------------- +// Should be atomic but gives errors on many platforms as generally we cannot cast a function pointer to a uintptr_t. +// For now, don't register output from multiple threads. #pragma warning(suppress:4180) -static volatile _Atomic(mi_output_fun*) mi_out_default; // = NULL +static volatile mi_output_fun* mi_out_default; // = NULL static mi_output_fun* mi_out_get_default(void) { - mi_output_fun* out = (mi_output_fun*)mi_atomic_read_ptr(mi_atomic_cast(void*, &mi_out_default)); + mi_output_fun* out = mi_out_default; return (out == NULL ? &mi_out_stderr : out); } void mi_register_output(mi_output_fun* out) mi_attr_noexcept { - mi_atomic_write_ptr(mi_atomic_cast(void*,&mi_out_default),out); + mi_out_default = out; }