]> granicus.if.org Git - php/commitdiff
enabled windows to use stack in both ts/nts mode, some more fixes
authorAnatol Belski <ab@php.net>
Thu, 24 Oct 2013 15:48:09 +0000 (08:48 -0700)
committerAnatol Belski <ab@php.net>
Thu, 24 Oct 2013 15:48:09 +0000 (08:48 -0700)
Zend/zend.h
Zend/zend_virtual_cwd.c

index acbb6acaf76ce1cc00d58fa712e3d00acda4fa34..5ac884455d4d0aec62f5e30b739f119282a8d59b 100644 (file)
@@ -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;
index 48aff01bd4ae9b9603e00aeb95de7851d0e5d71d..75bf3d252280d65a893b7dadba51011be41ac394 100644 (file)
@@ -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));