]> granicus.if.org Git - php/commitdiff
Fixed include_once() handling
authorDmitry Stogov <dmitry@zend.com>
Fri, 21 Feb 2014 13:23:13 +0000 (17:23 +0400)
committerDmitry Stogov <dmitry@zend.com>
Fri, 21 Feb 2014 13:23:13 +0000 (17:23 +0400)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index b8868e2a96dae53e7f2e1257d2ffe5d227cad99c..71e3cf4a1a1b2f75d5eb204c573f2761b15f4b1d 100644 (file)
@@ -3787,7 +3787,7 @@ ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMP|VAR|CV, ANY)
 
                                        resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC);
                                        if (resolved_path) {
-//???                                          failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1);
+                                               failure_retval = zend_hash_str_exists(&EG(included_files), resolved_path, strlen(resolved_path));
                                        } else {
                                                resolved_path = Z_STRVAL_P(inc_filename);
                                        }
@@ -3800,13 +3800,13 @@ ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMP|VAR|CV, ANY)
                                                        file_handle.opened_path = estrdup(resolved_path);
                                                }
 
-//???                                          if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) {
-//???                                                  new_op_array = zend_compile_file(&file_handle, (opline->extended_value==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
-//???                                                  zend_destroy_file_handle(&file_handle TSRMLS_CC);
-//???                                          } else {
-//???                                                  zend_file_handle_dtor(&file_handle TSRMLS_CC);
-//???                                                  failure_retval=1;
-//???                                          }
+                                               if (zend_hash_str_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path))) {
+                                                       new_op_array = zend_compile_file(&file_handle, (opline->extended_value==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
+                                                       zend_destroy_file_handle(&file_handle TSRMLS_CC);
+                                               } else {
+                                                       zend_file_handle_dtor(&file_handle TSRMLS_CC);
+                                                       failure_retval=1;
+                                               }
                                        } else {
                                                if (opline->extended_value == ZEND_INCLUDE_ONCE) {
                                                        zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
index dc54e0efea933a217acccbb43c116a4da45d91e4..65b72e910946e82f77d5bcba8547f13c4a2f823b 100644 (file)
@@ -2851,7 +2851,7 @@ static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HA
 
                                        resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC);
                                        if (resolved_path) {
-//???                                          failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1);
+                                               failure_retval = zend_hash_str_exists(&EG(included_files), resolved_path, strlen(resolved_path));
                                        } else {
                                                resolved_path = Z_STRVAL_P(inc_filename);
                                        }
@@ -2864,13 +2864,13 @@ static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HA
                                                        file_handle.opened_path = estrdup(resolved_path);
                                                }
 
-//???                                          if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) {
-//???                                                  new_op_array = zend_compile_file(&file_handle, (opline->extended_value==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
-//???                                                  zend_destroy_file_handle(&file_handle TSRMLS_CC);
-//???                                          } else {
-//???                                                  zend_file_handle_dtor(&file_handle TSRMLS_CC);
-//???                                                  failure_retval=1;
-//???                                          }
+                                               if (zend_hash_str_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path))) {
+                                                       new_op_array = zend_compile_file(&file_handle, (opline->extended_value==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
+                                                       zend_destroy_file_handle(&file_handle TSRMLS_CC);
+                                               } else {
+                                                       zend_file_handle_dtor(&file_handle TSRMLS_CC);
+                                                       failure_retval=1;
+                                               }
                                        } else {
                                                if (opline->extended_value == ZEND_INCLUDE_ONCE) {
                                                        zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
@@ -7821,7 +7821,7 @@ static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HAND
 
                                        resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC);
                                        if (resolved_path) {
-//???                                          failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1);
+                                               failure_retval = zend_hash_str_exists(&EG(included_files), resolved_path, strlen(resolved_path));
                                        } else {
                                                resolved_path = Z_STRVAL_P(inc_filename);
                                        }
@@ -7834,13 +7834,13 @@ static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HAND
                                                        file_handle.opened_path = estrdup(resolved_path);
                                                }
 
-//???                                          if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) {
-//???                                                  new_op_array = zend_compile_file(&file_handle, (opline->extended_value==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
-//???                                                  zend_destroy_file_handle(&file_handle TSRMLS_CC);
-//???                                          } else {
-//???                                                  zend_file_handle_dtor(&file_handle TSRMLS_CC);
-//???                                                  failure_retval=1;
-//???                                          }
+                                               if (zend_hash_str_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path))) {
+                                                       new_op_array = zend_compile_file(&file_handle, (opline->extended_value==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
+                                                       zend_destroy_file_handle(&file_handle TSRMLS_CC);
+                                               } else {
+                                                       zend_file_handle_dtor(&file_handle TSRMLS_CC);
+                                                       failure_retval=1;
+                                               }
                                        } else {
                                                if (opline->extended_value == ZEND_INCLUDE_ONCE) {
                                                        zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
@@ -12825,7 +12825,7 @@ static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER(ZEND_OPCODE_HAND
 
                                        resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC);
                                        if (resolved_path) {
-//???                                          failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1);
+                                               failure_retval = zend_hash_str_exists(&EG(included_files), resolved_path, strlen(resolved_path));
                                        } else {
                                                resolved_path = Z_STRVAL_P(inc_filename);
                                        }
@@ -12838,13 +12838,13 @@ static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER(ZEND_OPCODE_HAND
                                                        file_handle.opened_path = estrdup(resolved_path);
                                                }
 
-//???                                          if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) {
-//???                                                  new_op_array = zend_compile_file(&file_handle, (opline->extended_value==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
-//???                                                  zend_destroy_file_handle(&file_handle TSRMLS_CC);
-//???                                          } else {
-//???                                                  zend_file_handle_dtor(&file_handle TSRMLS_CC);
-//???                                                  failure_retval=1;
-//???                                          }
+                                               if (zend_hash_str_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path))) {
+                                                       new_op_array = zend_compile_file(&file_handle, (opline->extended_value==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
+                                                       zend_destroy_file_handle(&file_handle TSRMLS_CC);
+                                               } else {
+                                                       zend_file_handle_dtor(&file_handle TSRMLS_CC);
+                                                       failure_retval=1;
+                                               }
                                        } else {
                                                if (opline->extended_value == ZEND_INCLUDE_ONCE) {
                                                        zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
@@ -29454,7 +29454,7 @@ static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL
 
                                        resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC);
                                        if (resolved_path) {
-//???                                          failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1);
+                                               failure_retval = zend_hash_str_exists(&EG(included_files), resolved_path, strlen(resolved_path));
                                        } else {
                                                resolved_path = Z_STRVAL_P(inc_filename);
                                        }
@@ -29467,13 +29467,13 @@ static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL
                                                        file_handle.opened_path = estrdup(resolved_path);
                                                }
 
-//???                                          if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) {
-//???                                                  new_op_array = zend_compile_file(&file_handle, (opline->extended_value==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
-//???                                                  zend_destroy_file_handle(&file_handle TSRMLS_CC);
-//???                                          } else {
-//???                                                  zend_file_handle_dtor(&file_handle TSRMLS_CC);
-//???                                                  failure_retval=1;
-//???                                          }
+                                               if (zend_hash_str_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path))) {
+                                                       new_op_array = zend_compile_file(&file_handle, (opline->extended_value==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
+                                                       zend_destroy_file_handle(&file_handle TSRMLS_CC);
+                                               } else {
+                                                       zend_file_handle_dtor(&file_handle TSRMLS_CC);
+                                                       failure_retval=1;
+                                               }
                                        } else {
                                                if (opline->extended_value == ZEND_INCLUDE_ONCE) {
                                                        zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);