summaryrefslogtreecommitdiff
path: root/Zend/zend_API.c
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2006-05-27 19:06:06 +0000
committerMarcus Boerger <helly@php.net>2006-05-27 19:06:06 +0000
commitca6a202160cf0bc5dd17b082faea8b084b1a46cf (patch)
tree4f02bdf80abf85b5dc86c7d39c22c59d03987fc9 /Zend/zend_API.c
parent493f39da2d481e743a13b606525fb0fda8319644 (diff)
downloadphp-git-ca6a202160cf0bc5dd17b082faea8b084b1a46cf.tar.gz
- WS
Diffstat (limited to 'Zend/zend_API.c')
-rw-r--r--Zend/zend_API.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index caf613f020..5b6fe00252 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -499,8 +499,10 @@ static char *zend_parse_arg_impl(int arg_num, zval **arg, va_list *va, char **sp
} else {
if (Z_TYPE_PP(arg) == IS_NULL && return_null) {
*p = NULL;
+ } else if (ce) {
+ return ce->name;
} else {
- return ce ? ce->name : "object";
+ return "object";
}
}
}
@@ -545,6 +547,22 @@ static char *zend_parse_arg_impl(int arg_num, zval **arg, va_list *va, char **sp
}
break;
+ case 'f':
+ {
+ zend_fcall_info *fci = va_arg(*va, zend_fcall_info *);
+ zend_fcall_info_cache *fcc = va_arg(*va, zend_fcall_info_cache *);
+
+ if (zend_fcall_info_init(*arg, fci, fcc TSRMLS_CC) == SUCCESS) {
+ break;
+ } else if (return_null) {
+ fci->size = 0;
+ fcc->initialized = 0;
+ break;
+ } else {
+ return "function";
+ }
+ }
+
case 'z':
{
zval **p = va_arg(*va, zval **);
@@ -614,6 +632,7 @@ static int zend_parse_va_args(int num_args, char *type_spec, va_list *va, int fl
case 'o': case 'O':
case 'z': case 'Z':
case 'C': case 'h':
+ case 'f':
max_num_args++;
break;
@@ -664,7 +683,7 @@ static int zend_parse_va_args(int num_args, char *type_spec, va_list *va, int fl
if (num_args > arg_count) {
zend_error(E_WARNING, "%s(): could not obtain parameters for parsing",
- get_active_function_name(TSRMLS_C));
+ get_active_function_name(TSRMLS_C));
return FAILURE;
}
@@ -2378,7 +2397,7 @@ ZEND_API int zend_declare_property_ex(zend_class_entry *ce, char *name, int name
property_info.doc_comment_len = doc_comment_len;
property_info.ce = ce;
-
+
zend_hash_update(&ce->properties_info, name, name_length + 1, &property_info, sizeof(zend_property_info), NULL);
return SUCCESS;