summaryrefslogtreecommitdiff
path: root/Zend/zend_execute.c
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2001-08-02 17:27:19 +0000
committerZeev Suraski <zeev@php.net>2001-08-02 17:27:19 +0000
commit7ecb33868c2326e89aaa851270609416639174ec (patch)
tree041ab767772384fc289ed72a392d08cdcef5efde /Zend/zend_execute.c
parent84169a4bc2fc6c6f348320ef259d1c9e94b23b18 (diff)
downloadphp-git-7ecb33868c2326e89aaa851270609416639174ec.tar.gz
require_once()/include_once will return true in case a file was not included
because it was already included earlier. Changed the default return value type of the include() family from long to boolean
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r--Zend/zend_execute.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 6720bd014b..1e0bacaa3f 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -2036,6 +2036,7 @@ send_by_ref:
int return_value_used;
zval *inc_filename = get_zval_ptr(&opline->op1, Ts, &EG(free_op1), BP_VAR_R);
zval tmp_inc_filename;
+ zend_bool failure_retval=0;
if (inc_filename->type!=IS_STRING) {
tmp_inc_filename = *inc_filename;
@@ -2066,6 +2067,7 @@ send_by_ref:
opened_path = NULL; /* zend_destroy_file_handle() already frees it */
} else {
fclose(file_handle.handle.fp);
+ failure_retval=1;
}
} else {
if (opline->op2.u.constant.value.lval==ZEND_INCLUDE_ONCE) {
@@ -2097,11 +2099,11 @@ send_by_ref:
zval_dtor(&tmp_inc_filename);
}
FREE_OP(&opline->op1, EG(free_op1));
- Ts[opline->result.u.var].var.ptr = NULL;
Ts[opline->result.u.var].var.ptr_ptr = &Ts[opline->result.u.var].var.ptr;
if (new_op_array) {
EG(return_value_ptr_ptr) = Ts[opline->result.u.var].var.ptr_ptr;
EG(active_op_array) = new_op_array;
+ Ts[opline->result.u.var].var.ptr = NULL;
zend_execute(new_op_array TSRMLS_CC);
@@ -2114,7 +2116,7 @@ send_by_ref:
ALLOC_ZVAL(Ts[opline->result.u.var].var.ptr);
INIT_PZVAL(Ts[opline->result.u.var].var.ptr);
Ts[opline->result.u.var].var.ptr->value.lval = 1;
- Ts[opline->result.u.var].var.ptr->type = IS_LONG;
+ Ts[opline->result.u.var].var.ptr->type = IS_BOOL;
}
}
@@ -2127,6 +2129,8 @@ send_by_ref:
if (return_value_used) {
ALLOC_ZVAL(Ts[opline->result.u.var].var.ptr);
INIT_ZVAL(*Ts[opline->result.u.var].var.ptr);
+ Ts[opline->result.u.var].var.ptr->value.lval = failure_retval;
+ Ts[opline->result.u.var].var.ptr->type = IS_BOOL;
}
}
EG(return_value_ptr_ptr) = original_return_value;