diff options
author | Stanislav Malyshev <stas@php.net> | 2005-06-27 18:13:13 +0000 |
---|---|---|
committer | Stanislav Malyshev <stas@php.net> | 2005-06-27 18:13:13 +0000 |
commit | d5a129600895cdd0cba0b8834cb9951863c6999b (patch) | |
tree | f662205cd0df0955321c56ffd519ad4070022d69 /Zend/zend_exceptions.c | |
parent | 46fcf913b29394d44a4918b224d427a19ba00a72 (diff) | |
download | php-git-d5a129600895cdd0cba0b8834cb9951863c6999b.tar.gz |
fix various "Class entry requested for an object without PHP class" messages
when working with non-PHP objects.
# Using Z_OBJCE(object)->name is usually bad idea unless you know it's
# a pure PHP object
Diffstat (limited to 'Zend/zend_exceptions.c')
-rw-r--r-- | Zend/zend_exceptions.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c index 3479d4e732..f428c3cb74 100644 --- a/Zend/zend_exceptions.c +++ b/Zend/zend_exceptions.c @@ -359,10 +359,20 @@ static int _build_trace_args(zval **arg, int num_args, va_list args, zend_hash_k TRACE_APPEND_STR("Array, "); break; case IS_OBJECT: { + char *class_name; + zend_uint class_name_len; + int dup; TSRMLS_FETCH(); TRACE_APPEND_STR("Object("); - TRACE_APPEND_STRL(Z_OBJCE_PP(arg)->name, strlen(Z_OBJCE_PP(arg)->name)); + + dup = zend_get_object_classname(*arg, &class_name, &class_name_len TSRMLS_CC); + + TRACE_APPEND_STRL(class_name, class_name_len); + if(!dup) { + efree(class_name); + } + TRACE_APPEND_STR("), "); break; } |