diff options
Diffstat (limited to 'Zend/zend_API.c')
| -rw-r--r-- | Zend/zend_API.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 1f171adfa4..80eb984b17 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -300,6 +300,7 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons const char *spec_walk = *spec; char c = *spec_walk++; int check_null = 0; + zval *real_arg = arg; /* scan through modifiers */ while (1) { @@ -313,6 +314,10 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons spec_walk++; } + if (Z_TYPE_P(arg) == IS_REFERENCE) { + arg = Z_REFVAL_P(arg); + } + switch (c) { case 'l': case 'L': @@ -691,7 +696,7 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons if (check_null && Z_TYPE_P(arg) == IS_NULL) { *p = NULL; } else { - *p = arg; + *p = real_arg; } } break; |
