summaryrefslogtreecommitdiff
path: root/ext/standard/php_crypt_r.c
diff options
context:
space:
mode:
authorPierre Joye <pajoye@php.net>2010-06-15 09:26:22 +0000
committerPierre Joye <pajoye@php.net>2010-06-15 09:26:22 +0000
commit06e7d5e9cbfbed128596ebeb9b031188e7632aae (patch)
tree4b484c82344d8c9d5d6ca2caa22aa91866c4d333 /ext/standard/php_crypt_r.c
parentd868733cc32f99059f229eedd0cad51471d5500f (diff)
downloadphp-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.c10
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);