diff options
author | Anatol Belski <ab@php.net> | 2017-08-14 00:44:19 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2017-08-14 00:44:19 +0200 |
commit | 3069ad8dd1400f19a28230d3028048a27d07ce8d (patch) | |
tree | 7759d0c0a9d38daa8442c037cbef288f7f11513e /Zend/zend_virtual_cwd.c | |
parent | 207105b1a3844cf4d3fd5f17e17ddbd6804e1938 (diff) | |
download | php-git-3069ad8dd1400f19a28230d3028048a27d07ce8d.tar.gz |
Fixed bug #75063
Diffstat (limited to 'Zend/zend_virtual_cwd.c')
-rw-r--r-- | Zend/zend_virtual_cwd.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/Zend/zend_virtual_cwd.c b/Zend/zend_virtual_cwd.c index c42739a744..2fa12f8180 100644 --- a/Zend/zend_virtual_cwd.c +++ b/Zend/zend_virtual_cwd.c @@ -445,11 +445,15 @@ static void cwd_globals_dtor(virtual_cwd_globals *cwd_g) /* {{{ */ } /* }}} */ -CWD_API void virtual_cwd_startup(void) /* {{{ */ +void virtual_cwd_main_cwd_init(uint8_t reinit) /* {{{ */ { char cwd[MAXPATHLEN]; char *result; + if (reinit) { + free(main_cwd_state.cwd); + } + #ifdef NETWARE result = getcwdpath(cwd, NULL, 1); if(result) @@ -461,10 +465,10 @@ CWD_API void virtual_cwd_startup(void) /* {{{ */ ++c; } } -#else -#ifdef ZEND_WIN32 +#elif defined(ZEND_WIN32) ZeroMemory(&cwd, sizeof(cwd)); -#endif + result = php_win32_ioutil_getcwd(cwd, sizeof(cwd)); +#else result = getcwd(cwd, sizeof(cwd)); #endif if (!result) { @@ -478,7 +482,12 @@ CWD_API void virtual_cwd_startup(void) /* {{{ */ } #endif main_cwd_state.cwd = strdup(cwd); +} +/* }}} */ +CWD_API void virtual_cwd_startup(void) /* {{{ */ +{ + virtual_cwd_main_cwd_init(0); #ifdef ZTS ts_allocate_id(&cwd_globals_id, sizeof(virtual_cwd_globals), (ts_allocate_ctor) cwd_globals_ctor, (ts_allocate_dtor) cwd_globals_dtor); #else |