X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Falloc.c;h=7b1985621523be8639c09be8ee79597aeae3e65b;hb=dc71db379ab4162a45c393a2e828f619dae9fa32;hp=9d9c6d68ba8b4a8a41974cd3f9db29daa17dabd1;hpb=cf4cb9554515c59eddbde38d1cf236339c37f55f;p=sbcl.git diff --git a/src/runtime/alloc.c b/src/runtime/alloc.c index 9d9c6d6..7b19856 100644 --- a/src/runtime/alloc.c +++ b/src/runtime/alloc.c @@ -45,11 +45,12 @@ pa_alloc(int bytes) { lispobj *result=0; struct thread *th=arch_os_get_current_thread(); + /* FIXME: OOAO violation: see arch_pseudo_* */ SetSymbolValue(PSEUDO_ATOMIC_INTERRUPTED, make_fixnum(0),th); SetSymbolValue(PSEUDO_ATOMIC_ATOMIC, make_fixnum(1),th); result=alloc(bytes); SetSymbolValue(PSEUDO_ATOMIC_ATOMIC, make_fixnum(0),th); - if (SymbolValue(PSEUDO_ATOMIC_INTERRUPTED,th)) + if (fixnum_value(SymbolValue(PSEUDO_ATOMIC_INTERRUPTED,th))) /* even if we gc at this point, the new allocation will be * protected from being moved, because result is on the c stack * and points to it */