diff options
author | Andrei Zmievski <andrei@php.net> | 1999-12-15 22:37:05 +0000 |
---|---|---|
committer | Andrei Zmievski <andrei@php.net> | 1999-12-15 22:37:05 +0000 |
commit | 8a879b8fc528f7b38e7a75b51fd317c6a4a5e383 (patch) | |
tree | c167ada16290a3e3d4eb98a27a41718823f48c99 /Zend/zend_builtin_functions.c | |
parent | 9201cfdd81e8044b35bbf3f37e5a403d710ab86b (diff) | |
download | php-git-8a879b8fc528f7b38e7a75b51fd317c6a4a5e383.tar.gz |
Doh! I'm an idiot.
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r-- | Zend/zend_builtin_functions.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index f7c9b4f9ee..45828bff70 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -396,7 +396,7 @@ ZEND_FUNCTION(get_parent_class) /* }}} */ /* {{{ proto bool is_subclass_of(object object, string class_name) - Returns true if the object is part of hierarchy derived from passed class */ + Returns true if the object has this class as one of its parents */ ZEND_FUNCTION(is_subclass_of) { zval **obj, **class_name; @@ -412,23 +412,16 @@ ZEND_FUNCTION(is_subclass_of) RETURN_FALSE; } - parent_ce = (*obj)->value.obj.ce->parent; - if (!parent_ce) { - RETURN_FALSE; - } - convert_to_string_ex(class_name); lcname = estrndup((*class_name)->value.str.val, (*class_name)->value.str.len); zend_str_tolower(lcname, (*class_name)->value.str.len); - do { + for (parent_ce = (*obj)->value.obj.ce->parent; parent_ce != NULL; parent_ce = parent_ce->parent) { if (!strcmp(parent_ce->name, lcname)) { efree(lcname); RETURN_TRUE; } - } while (parent_ce->parent - && zend_hash_find(CG(class_table), parent_ce->parent->name, - parent_ce->parent->name_length+1, (void**)&parent_ce)==SUCCESS); + } efree(lcname); RETURN_FALSE; } |