Browse Source

Removed unnecessary checks for ISREG file and corresponding stat() calls on Wind

ows
migration/RELEASE_1_0_0
Dmitry Stogov 20 years ago
parent
commit
b71309f4a2
  1. 5
      main/fopen_wrappers.c
  2. 9
      main/streams/plain_wrapper.c

5
main/fopen_wrappers.c

@ -263,7 +263,9 @@ static FILE *php_fopen_and_set_opened_path(const char *path, const char *mode, c
PHPAPI int php_fopen_primary_script(zend_file_handle *file_handle TSRMLS_DC)
{
FILE *fp;
#ifndef PHP_WIN32
struct stat st;
#endif
char *path_info, *filename;
int length;
@ -329,11 +331,14 @@ PHPAPI int php_fopen_primary_script(zend_file_handle *file_handle TSRMLS_DC)
}
fp = VCWD_FOPEN(filename, "rb");
#ifndef PHP_WIN32
/* refuse to open anything that is not a regular file */
if (fp && (0 > fstat(fileno(fp), &st) || !S_ISREG(st.st_mode))) {
fclose(fp);
fp = NULL;
}
#endif
if (!fp) {
STR_FREE(SG(request_info).path_translated); /* for same reason as above */
SG(request_info).path_translated = NULL;

9
main/streams/plain_wrapper.c

@ -891,6 +891,8 @@ PHPAPI php_stream *_php_stream_fopen(const char *filename, const char *mode, cha
efree(persistent_id);
}
/* WIN32 always set ISREG flag */
#ifndef PHP_WIN32
/* sanity checks for include/require.
* We check these after opening the stream, so that we save
* on fstat() syscalls */
@ -899,15 +901,12 @@ PHPAPI php_stream *_php_stream_fopen(const char *filename, const char *mode, cha
int r;
r = do_fstat(self, 0);
if (
#ifndef PHP_WIN32
(r != 0) || /* it is OK for fstat to fail under win32 */
#endif
(r == 0 && !S_ISREG(self->sb.st_mode))) {
if ((r == 0 && !S_ISREG(self->sb.st_mode))) {
php_stream_close(ret);
return NULL;
}
}
#endif
return ret;
}

Loading…
Cancel
Save