diff options
author | Pierre Joye <pajoye@php.net> | 2010-06-15 09:26:22 +0000 |
---|---|---|
committer | Pierre Joye <pajoye@php.net> | 2010-06-15 09:26:22 +0000 |
commit | 06e7d5e9cbfbed128596ebeb9b031188e7632aae (patch) | |
tree | 4b484c82344d8c9d5d6ca2caa22aa91866c4d333 /ext/standard/php_crypt_r.c | |
parent | d868733cc32f99059f229eedd0cad51471d5500f (diff) | |
download | php-git-06e7d5e9cbfbed128596ebeb9b031188e7632aae.tar.gz |
- Fix #51424, crypt() function hangs after 3rd call
Diffstat (limited to 'ext/standard/php_crypt_r.c')
-rw-r--r-- | ext/standard/php_crypt_r.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/ext/standard/php_crypt_r.c b/ext/standard/php_crypt_r.c index d04d4dd78d..91063003e7 100644 --- a/ext/standard/php_crypt_r.c +++ b/ext/standard/php_crypt_r.c @@ -81,11 +81,13 @@ void _crypt_extended_init_r(void) tsrm_mutex_lock(php_crypt_extended_init_lock); #endif - if (initialized) { - return; - } else { + if (!initialized) { +#ifdef PHP_WIN32 + InterlockedIncrement(initialized); +#elif (defined(__GNUC__) && (__GNUC__ >= 4 && __GNUC_MINOR >= 2)) + __sync_fetch_and_add(&initialized, 1); +#endif _crypt_extended_init(); - initialized = 1; } #ifdef ZTS tsrm_mutex_unlock(php_crypt_extended_init_lock); |