| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | /* vi: set ft=c : */ | 
| 2 |  |  |  |  |  |  |  | 
| 3 |  |  |  |  |  |  | #ifndef OP_CHECK_MUTEX_LOCK /* < 5.15.8 */ | 
| 4 |  |  |  |  |  |  | #  define OP_CHECK_MUTEX_LOCK ((void)0) | 
| 5 |  |  |  |  |  |  | #  define OP_CHECK_MUTEX_UNLOCK ((void)0) | 
| 6 |  |  |  |  |  |  | #endif | 
| 7 |  |  |  |  |  |  |  | 
| 8 |  |  |  |  |  |  | #define wrap_keyword_plugin(func, var)  S_wrap_keyword_plugin(aTHX_ func, var) | 
| 9 |  |  |  |  |  |  |  | 
| 10 |  |  |  |  |  |  | static void S_wrap_keyword_plugin(pTHX_ Perl_keyword_plugin_t func, Perl_keyword_plugin_t *var) | 
| 11 |  |  |  |  |  |  | { | 
| 12 |  |  |  |  |  |  | /* BOOT can potentially race with other threads (RT123547) */ | 
| 13 |  |  |  |  |  |  |  | 
| 14 |  |  |  |  |  |  | /* Perl doesn't really provide us a nice mutex for doing this so this is the | 
| 15 |  |  |  |  |  |  | * best we can find. See also | 
| 16 |  |  |  |  |  |  | *   https://rt.perl.org/Public/Bug/Display.html?id=132413 | 
| 17 |  |  |  |  |  |  | */ | 
| 18 | 1 | 50 |  |  |  |  | if(*var) | 
| 19 |  |  |  |  |  |  | return; | 
| 20 |  |  |  |  |  |  |  | 
| 21 |  |  |  |  |  |  | OP_CHECK_MUTEX_LOCK; | 
| 22 | 1 | 50 |  |  |  |  | if(!*var) { | 
| 23 | 1 |  |  |  |  |  | *var = PL_keyword_plugin; | 
| 24 | 1 |  |  |  |  |  | PL_keyword_plugin = func; | 
| 25 |  |  |  |  |  |  | } | 
| 26 |  |  |  |  |  |  |  | 
| 27 |  |  |  |  |  |  | OP_CHECK_MUTEX_UNLOCK; | 
| 28 |  |  |  |  |  |  | } |