From: Andi Gutmans Date: Mon, 12 Mar 2001 16:27:26 +0000 (+0000) Subject: - Missed second place. X-Git-Tag: php-4.0.5RC1~11 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7db391b054b618263552c5b46bd14337cb6b292e;p=php - Missed second place. --- diff --git a/Zend/zend_API.c b/Zend/zend_API.c index e7aa3ab946..9d028e42ac 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -935,7 +935,6 @@ zend_bool zend_is_callable(zval *callable, zend_bool syntax_only, char **callabl zval **method; zval **obj; zend_class_entry *ce; - char name_buf[1024]; char callable_name_len; if (zend_hash_index_find(Z_ARRVAL_P(callable), 0, (void **) &obj) == SUCCESS && @@ -967,15 +966,24 @@ zend_bool zend_is_callable(zval *callable, zend_bool syntax_only, char **callabl } break; } - } else + } else { ce = Z_OBJCE_PP(obj); + } lcname = estrndup(Z_STRVAL_PP(method), Z_STRLEN_PP(method)); zend_str_tolower(lcname, Z_STRLEN_PP(method)); if (zend_hash_exists(&ce->function_table, lcname, Z_STRLEN_PP(method)+1)) retval = 1; if (!retval && callable_name) { - callable_name_len = snprintf(name_buf, 1024, "%s::%s", ce->name, Z_STRVAL_PP(method)); - *callable_name = estrndup(name_buf, callable_name_len); + char *ptr; + int ce_name_len = strlen(ce->name); + + callable_name_len = ce_name_len + Z_STRLEN_PP(method) + sizeof("::"); + ptr = *callable_name = emalloc(callable_name_len); + memcpy(ptr, ce->name, ce_name_len); + ptr += ce_name_len; + memcpy(ptr, "::", sizeof("::") - 1); + ptr += sizeof("::") - 1; + memcpy(ptr, Z_STRVAL_PP(method), Z_STRLEN_PP(method) + 1); } efree(lcname); } else if (callable_name)