summaryrefslogtreecommitdiff
path: root/Zend/zend_API.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_API.c')
-rw-r--r--Zend/zend_API.c7
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;