]> granicus.if.org Git - php/commitdiff
MFB: Fixed bug #38579 require_once/include_once optimization causes files
authorIlia Alshanetsky <iliaa@php.net>
Tue, 5 Sep 2006 15:52:42 +0000 (15:52 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Tue, 5 Sep 2006 15:52:42 +0000 (15:52 +0000)
to be loaded multiple times.

Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index d015ed29192ddc84b5209360c3806fb576429921..d79ac34695aa3f96a7f0e08828821bf73ed74e77 100644 (file)
@@ -2833,20 +2833,23 @@ ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMP|VAR|CV, ANY)
                                zend_file_handle file_handle;
                                char cwd[MAXPATHLEN];
                                cwd_state state;
-
+#ifndef PHP_WIN32
                                if (IS_ABSOLUTE_PATH(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename))) {
                                        cwd[0] = '\0';
                                } else if (!VCWD_GETCWD(cwd, MAXPATHLEN)) {
                                        cwd[0] = '\0';
                                }
-
+#endif
                                state.cwd_length = strlen(cwd);
                                state.cwd = zend_strndup(cwd, state.cwd_length);
 
+#ifndef PHP_WIN32
                                if (!virtual_file_ex(&state, Z_STRVAL_P(inc_filename), NULL, 1) &&
                                    zend_hash_exists(&EG(included_files), state.cwd, state.cwd_length+1)) {
                                        failure_retval=1;
-                               } else if (SUCCESS == zend_stream_open(Z_STRVAL_P(inc_filename), &file_handle TSRMLS_CC)) {
+                               } else 
+#endif
+                               if (SUCCESS == zend_stream_open(Z_STRVAL_P(inc_filename), &file_handle TSRMLS_CC)) {
                                        if (!file_handle.opened_path) {
                                                file_handle.opened_path = estrndup(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename));
                                        }
index 5723a45f3e1c7c03e2d8261b3e472254b2d946ed..15f1b9dd0cc7a31703302a6f03b5a2a22408b31e 100644 (file)
@@ -1914,20 +1914,23 @@ static int ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                                zend_file_handle file_handle;
                                char cwd[MAXPATHLEN];
                                cwd_state state;
-
+#ifndef PHP_WIN32
                                if (IS_ABSOLUTE_PATH(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename))) {
                                        cwd[0] = '\0';
                                } else if (!VCWD_GETCWD(cwd, MAXPATHLEN)) {
                                        cwd[0] = '\0';
                                }
-
+#endif
                                state.cwd_length = strlen(cwd);
                                state.cwd = zend_strndup(cwd, state.cwd_length);
 
+#ifndef PHP_WIN32
                                if (!virtual_file_ex(&state, Z_STRVAL_P(inc_filename), NULL, 1) &&
                                    zend_hash_exists(&EG(included_files), state.cwd, state.cwd_length+1)) {
                                        failure_retval=1;
-                               } else if (SUCCESS == zend_stream_open(Z_STRVAL_P(inc_filename), &file_handle TSRMLS_CC)) {
+                               } else
+#endif
+                               if (SUCCESS == zend_stream_open(Z_STRVAL_P(inc_filename), &file_handle TSRMLS_CC)) {
                                        if (!file_handle.opened_path) {
                                                file_handle.opened_path = estrndup(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename));
                                        }
@@ -4500,20 +4503,23 @@ static int ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                                zend_file_handle file_handle;
                                char cwd[MAXPATHLEN];
                                cwd_state state;
-
+#ifndef PHP_WIN32
                                if (IS_ABSOLUTE_PATH(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename))) {
                                        cwd[0] = '\0';
                                } else if (!VCWD_GETCWD(cwd, MAXPATHLEN)) {
                                        cwd[0] = '\0';
                                }
-
+#endif
                                state.cwd_length = strlen(cwd);
                                state.cwd = zend_strndup(cwd, state.cwd_length);
 
+#ifndef PHP_WIN32
                                if (!virtual_file_ex(&state, Z_STRVAL_P(inc_filename), NULL, 1) &&
                                    zend_hash_exists(&EG(included_files), state.cwd, state.cwd_length+1)) {
                                        failure_retval=1;
-                               } else if (SUCCESS == zend_stream_open(Z_STRVAL_P(inc_filename), &file_handle TSRMLS_CC)) {
+                               } else
+#endif
+                               if (SUCCESS == zend_stream_open(Z_STRVAL_P(inc_filename), &file_handle TSRMLS_CC)) {
                                        if (!file_handle.opened_path) {
                                                file_handle.opened_path = estrndup(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename));
                                        }
@@ -7683,20 +7689,23 @@ static int ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                                zend_file_handle file_handle;
                                char cwd[MAXPATHLEN];
                                cwd_state state;
-
+#ifndef PHP_WIN32
                                if (IS_ABSOLUTE_PATH(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename))) {
                                        cwd[0] = '\0';
                                } else if (!VCWD_GETCWD(cwd, MAXPATHLEN)) {
                                        cwd[0] = '\0';
                                }
-
+#endif
                                state.cwd_length = strlen(cwd);
                                state.cwd = zend_strndup(cwd, state.cwd_length);
 
+#ifndef PHP_WIN32
                                if (!virtual_file_ex(&state, Z_STRVAL_P(inc_filename), NULL, 1) &&
                                    zend_hash_exists(&EG(included_files), state.cwd, state.cwd_length+1)) {
                                        failure_retval=1;
-                               } else if (SUCCESS == zend_stream_open(Z_STRVAL_P(inc_filename), &file_handle TSRMLS_CC)) {
+                               } else
+#endif
+                               if (SUCCESS == zend_stream_open(Z_STRVAL_P(inc_filename), &file_handle TSRMLS_CC)) {
                                        if (!file_handle.opened_path) {
                                                file_handle.opened_path = estrndup(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename));
                                        }
@@ -20586,20 +20595,23 @@ static int ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                                zend_file_handle file_handle;
                                char cwd[MAXPATHLEN];
                                cwd_state state;
-
+#ifndef PHP_WIN32
                                if (IS_ABSOLUTE_PATH(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename))) {
                                        cwd[0] = '\0';
                                } else if (!VCWD_GETCWD(cwd, MAXPATHLEN)) {
                                        cwd[0] = '\0';
                                }
-
+#endif
                                state.cwd_length = strlen(cwd);
                                state.cwd = zend_strndup(cwd, state.cwd_length);
 
+#ifndef PHP_WIN32
                                if (!virtual_file_ex(&state, Z_STRVAL_P(inc_filename), NULL, 1) &&
                                    zend_hash_exists(&EG(included_files), state.cwd, state.cwd_length+1)) {
                                        failure_retval=1;
-                               } else if (SUCCESS == zend_stream_open(Z_STRVAL_P(inc_filename), &file_handle TSRMLS_CC)) {
+                               } else
+#endif
+                               if (SUCCESS == zend_stream_open(Z_STRVAL_P(inc_filename), &file_handle TSRMLS_CC)) {
                                        if (!file_handle.opened_path) {
                                                file_handle.opened_path = estrndup(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename));
                                        }