summaryrefslogtreecommitdiff
path: root/Zend/zend_virtual_cwd.c
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2017-08-14 00:44:19 +0200
committerAnatol Belski <ab@php.net>2017-08-14 00:44:19 +0200
commit3069ad8dd1400f19a28230d3028048a27d07ce8d (patch)
tree7759d0c0a9d38daa8442c037cbef288f7f11513e /Zend/zend_virtual_cwd.c
parent207105b1a3844cf4d3fd5f17e17ddbd6804e1938 (diff)
downloadphp-git-3069ad8dd1400f19a28230d3028048a27d07ce8d.tar.gz
Fixed bug #75063
Diffstat (limited to 'Zend/zend_virtual_cwd.c')
-rw-r--r--Zend/zend_virtual_cwd.c17
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