diff options
author | Marcus Boerger <helly@php.net> | 2006-05-27 19:06:06 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2006-05-27 19:06:06 +0000 |
commit | ca6a202160cf0bc5dd17b082faea8b084b1a46cf (patch) | |
tree | 4f02bdf80abf85b5dc86c7d39c22c59d03987fc9 /Zend/zend_API.c | |
parent | 493f39da2d481e743a13b606525fb0fda8319644 (diff) | |
download | php-git-ca6a202160cf0bc5dd17b082faea8b084b1a46cf.tar.gz |
- WS
Diffstat (limited to 'Zend/zend_API.c')
-rw-r--r-- | Zend/zend_API.c | 25 |
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; |