summaryrefslogtreecommitdiff
path: root/Zend/zend_API.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-02-19 14:35:28 +0400
committerDmitry Stogov <dmitry@zend.com>2014-02-19 14:35:28 +0400
commit8bae1daa0c7f6b66283baedd5205906fc6357363 (patch)
tree7db3ada36331e5452aa8503b8156a205da9b845c /Zend/zend_API.c
parent9067dbcd0d8d8bed6c723d274b162182f33281ea (diff)
downloadphp-git-8bae1daa0c7f6b66283baedd5205906fc6357363.tar.gz
Use better data structures (incomplete)
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;