X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=Magic.xs;h=e6c2fdfb937b1e3f691af80edbdd896a31cf8921;hb=be3665d8224dfbb9cff5f53796500821d9c8185a;hp=207fcb383a75a3162632239b0cc74c7ff5335504;hpb=64d80b88646a16ec430354d4139798d152f0e3ca;p=perl%2Fmodules%2FVariable-Magic.git diff --git a/Magic.xs b/Magic.xs index 207fcb3..e6c2fdf 100644 --- a/Magic.xs +++ b/Magic.xs @@ -62,7 +62,9 @@ #endif #if VMG_MULTIPLICITY && defined(USE_ITHREADS) && defined(dMY_CXT) && defined(MY_CXT) && defined(START_MY_CXT) && defined(MY_CXT_INIT) && (defined(MY_CXT_CLONE) || defined(dMY_CXT_SV)) -# define VMG_THREADSAFE 1 +# ifndef VMG_THREADSAFE +# define VMG_THREADSAFE 1 +# endif # ifndef MY_CXT_CLONE # define MY_CXT_CLONE \ dMY_CXT_SV; \ @@ -71,6 +73,7 @@ sv_setuv(my_cxt_sv, PTR2UV(my_cxtp)) # endif #else +# undef VMG_THREADSAFE # define VMG_THREADSAFE 0 # undef dMY_CXT # define dMY_CXT dNOOP @@ -1881,12 +1884,14 @@ static void vmg_setup(pTHX) { #if VMG_THREADSAFE VMG_LOADED_LOCK; - if (vmg_loaded <= 0) { - assert(vmg_loaded == 0); + if (vmg_loaded == 0) { MUTEX_INIT(&vmg_vtable_refcount_mutex); MUTEX_INIT(&vmg_op_name_init_mutex); + vmg_loaded = 1; + } else { + assert(vmg_loaded > 0); + ++vmg_loaded; } - ++vmg_loaded; VMG_LOADED_UNLOCK; #endif