zval **param, *param_ptr;
ELS_FETCH();
- p = EG(argument_stack).top_element-1;
+ p = EG(argument_stack).top_element-2;
arg_count = (ulong) *p;
if (param_count>arg_count) {
zval *param_ptr;
ELS_FETCH();
- p = EG(argument_stack).top_element-1;
+ p = EG(argument_stack).top_element-2;
arg_count = (ulong) *p;
if (param_count>arg_count) {
zval ***param;
ELS_FETCH();
- p = EG(argument_stack).top_element-1;
+ p = EG(argument_stack).top_element-2;
arg_count = (ulong) *p;
if (param_count>arg_count) {
int arg_count;
ELS_FETCH();
- p = EG(argument_stack).top_element-1;
+ p = EG(argument_stack).top_element-2;
arg_count = (ulong) *p;
if (param_count>arg_count) {
zval *arg;
ELS_FETCH();
- p = EG(argument_stack).elements+EG(argument_stack).top-1;
+ p = EG(argument_stack).elements+EG(argument_stack).top-2;
arg_count = (ulong) *p;
if (n>arg_count) {
int arg_count;
p = EG(argument_stack).top_element-1;
+ if (p) {
+ zend_error(E_ERROR, "func_num_args(): Can't be used as a function parameter");
+ }
+ --p;
arg_count = (ulong) *p; /* this is the amount of arguments passed to func_num_args(); */
- p = EG(argument_stack).top_element-1-arg_count-1;
+ p = EG(argument_stack).top_element-1-arg_count-2;
if (p>=EG(argument_stack).elements) {
RETURN_LONG((ulong) *p);
} else {
requested_offset = (*z_requested_offset)->value.lval;
p = EG(argument_stack).top_element-1;
+ if (p) {
+ zend_error(E_ERROR, "func_get_arg(): Can't be used as a function parameter");
+ }
+ --p;
arg_count = (ulong) *p; /* this is the amount of arguments passed to func_num_args(); */
- p = EG(argument_stack).top_element-1-arg_count-1;
+ p = EG(argument_stack).top_element-1-arg_count-2;
if (p<EG(argument_stack).elements) {
zend_error(E_WARNING, "func_get_arg(): Called from the global scope - no function context");
RETURN_FALSE;
int i;
p = EG(argument_stack).top_element-1;
+ if (p) {
+ zend_error(E_ERROR, "func_get_args(): Can't be used as a function parameter");
+ }
+ --p;
+
arg_count = (ulong) *p; /* this is the amount of arguments passed to func_num_args(); */
- p = EG(argument_stack).top_element-1-arg_count-1;
+ p = EG(argument_stack).top_element-1-arg_count-2;
if (p<EG(argument_stack).elements) {
zend_error(E_WARNING, "func_get_args(): Called from the global scope - no function context");
RETURN_FALSE;
zval **original_return_value;
int return_value_used = RETURN_VALUE_USED(opline);
- zend_ptr_stack_push(&EG(argument_stack), (void *) opline->extended_value);
+ zend_ptr_stack_n_push(&EG(argument_stack), 2, (void *) opline->extended_value, NULL);
Ts[opline->result.u.var].var.ptr_ptr = &Ts[opline->result.u.var].var.ptr;
zend_ptr_stack_push(&EG(argument_stack), param);
}
- zend_ptr_stack_push(&EG(argument_stack), (void *) (long) param_count);
+ zend_ptr_stack_n_push(&EG(argument_stack), 2, (void *) (long) param_count, NULL);
if (function_state.function->type == ZEND_USER_FUNCTION) {
calling_symbol_table = EG(active_symbol_table);
*/
ZEND_API inline void zend_ptr_stack_clear_multiple(ELS_D)
{
- void **p = EG(argument_stack).top_element-1;
+ void **p = EG(argument_stack).top_element-2;
int delete_count = (ulong) *p;
- EG(argument_stack).top -= (delete_count+1);
+ EG(argument_stack).top -= (delete_count+2);
while (--delete_count>=0) {
zval_ptr_dtor((zval **) --p);
}
ZEND_API int zend_ptr_stack_get_arg(int requested_arg, void **data ELS_DC)
{
- void **p = EG(argument_stack).top_element-1;
+ void **p = EG(argument_stack).top_element-2;
int arg_count = (ulong) *p;
if (requested_arg>arg_count) {