From: Anatol Belski Date: Thu, 24 Oct 2013 15:48:09 +0000 (-0700) Subject: enabled windows to use stack in both ts/nts mode, some more fixes X-Git-Tag: php-5.6.0alpha1~211^2~8^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=25dc4af3920d40c4dbec203485c15922a29e08c3;p=php enabled windows to use stack in both ts/nts mode, some more fixes --- diff --git a/Zend/zend.h b/Zend/zend.h index acbb6acaf7..5ac884455d 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -193,7 +193,7 @@ char *alloca (); #endif #define restrict __restrict__ -#if (HAVE_ALLOCA || (defined (__GNUC__) && __GNUC__ >= 2)) && !(defined(ZTS) && defined(ZEND_WIN32)) && !(defined(ZTS) && defined(NETWARE)) && !(defined(ZTS) && defined(HPUX)) && !defined(DARWIN) +#if (HAVE_ALLOCA || (defined (__GNUC__) && __GNUC__ >= 2)) && !(defined(ZTS) && defined(NETWARE)) && !(defined(ZTS) && defined(HPUX)) && !defined(DARWIN) # define ZEND_ALLOCA_MAX_SIZE (32 * 1024) # define ALLOCA_FLAG(name) \ zend_bool name; diff --git a/Zend/zend_virtual_cwd.c b/Zend/zend_virtual_cwd.c index 48aff01bd4..75bf3d2522 100644 --- a/Zend/zend_virtual_cwd.c +++ b/Zend/zend_virtual_cwd.c @@ -225,7 +225,6 @@ CWD_API int php_sys_readlink(const char *link, char *target, size_t target_len){ HINSTANCE kernel32; HANDLE hFile; DWORD dwRet; - ALLOCA_FLAG(use_heap) typedef BOOL (WINAPI *gfpnh_func)(HANDLE, LPTSTR, DWORD, DWORD); gfpnh_func pGetFinalPathNameByHandle; @@ -289,6 +288,7 @@ CWD_API int php_sys_stat_ex(const char *path, struct stat *buf, int lstat) /* {{ WIN32_FILE_ATTRIBUTE_DATA data; __int64 t; const size_t path_len = strlen(path); + ALLOCA_FLAG(use_heap_large); if (!GetFileAttributesEx(path, GetFileExInfoStandard, &data)) { return stat(path, buf); @@ -346,7 +346,7 @@ CWD_API int php_sys_stat_ex(const char *path, struct stat *buf, int lstat) /* {{ return -1; } - pbuffer = (REPARSE_DATA_BUFFER *)do_alloca(MAXIMUM_REPARSE_DATA_BUFFER_SIZE, use_heap); + pbuffer = (REPARSE_DATA_BUFFER *)do_alloca(MAXIMUM_REPARSE_DATA_BUFFER_SIZE, use_heap_large); if(!DeviceIoControl(hLink, FSCTL_GET_REPARSE_POINT, NULL, 0, pbuffer, MAXIMUM_REPARSE_DATA_BUFFER_SIZE, &retlength, NULL)) { free_alloca(pbuffer, use_heap_large); CloseHandle(hLink); @@ -365,7 +365,7 @@ CWD_API int php_sys_stat_ex(const char *path, struct stat *buf, int lstat) /* {{ buf->st_mode |=; } #endif - free_alloca(pbuffer); + free_alloca(pbuffer, use_heap_large); } else { buf->st_mode = (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? (S_IFDIR|S_IEXEC|(S_IEXEC>>3)|(S_IEXEC>>6)) : S_IFREG; buf->st_mode |= (data.dwFileAttributes & FILE_ATTRIBUTE_READONLY) ? (S_IREAD|(S_IREAD>>3)|(S_IREAD>>6)) : (S_IREAD|(S_IREAD>>3)|(S_IREAD>>6)|S_IWRITE|(S_IWRITE>>3)|(S_IWRITE>>6));