diff options
| author | Marcus Boerger <helly@php.net> | 2003-05-29 23:44:22 +0000 |
|---|---|---|
| committer | Marcus Boerger <helly@php.net> | 2003-05-29 23:44:22 +0000 |
| commit | 90640a77746a7f2e53ba809a0898343bb84147a1 (patch) | |
| tree | 7162bd02cdff539ecdef756eac973eb221f6c800 /ext/spl/spl_functions.c | |
| parent | 493633d16f0510a811b275e433cc374053ad6466 (diff) | |
| download | php-git-90640a77746a7f2e53ba809a0898343bb84147a1.tar.gz | |
Optimize
Diffstat (limited to 'ext/spl/spl_functions.c')
| -rwxr-xr-x | ext/spl/spl_functions.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/ext/spl/spl_functions.c b/ext/spl/spl_functions.c index cad40e5566..93dfe0bc2c 100755 --- a/ext/spl/spl_functions.c +++ b/ext/spl/spl_functions.c @@ -134,12 +134,13 @@ char * spl_make_fully_qualyfied_name(zend_class_entry * pce TSRMLS_DC) void spl_add_class_name(zval * list, zend_class_entry * pce TSRMLS_DC) { char * str = spl_make_fully_qualyfied_name(pce TSRMLS_CC); + size_t len = strlen(str); zval *tmp; - if (zend_hash_find(Z_ARRVAL_P(list), str, strlen(str)+1, (void*)&tmp) == FAILURE) { + if (zend_hash_find(Z_ARRVAL_P(list), str, len+1, (void*)&tmp) == FAILURE) { MAKE_STD_ZVAL(tmp); ZVAL_STRING(tmp, str, 0); - zend_hash_add(Z_ARRVAL_P(list), str, strlen(str)+1, &tmp, sizeof(zval *), NULL); + zend_hash_add(Z_ARRVAL_P(list), str, len+1, &tmp, sizeof(zval *), NULL); } else { efree(str); } @@ -153,23 +154,20 @@ void spl_add_interfaces(zval *list, zend_class_entry * pce TSRMLS_DC) for (num_interfaces = 0; num_interfaces < pce->num_interfaces; num_interfaces++) { spl_add_class_name(list, pce->interfaces[num_interfaces] TSRMLS_CC); - spl_add_interfaces(list, pce->interfaces[num_interfaces] TSRMLS_CC); - } - if (pce->parent) { - spl_add_class_name(list, pce->parent TSRMLS_CC); - spl_add_interfaces(list, pce->parent TSRMLS_CC); } } /* }}} */ -/* {{{ spl_add_interfaces */ +/* {{{ spl_add_classes */ int spl_add_classes(zend_class_entry ** ppce, zval *list TSRMLS_DC) { - spl_add_class_name(list, *ppce TSRMLS_CC); - if ((*ppce)->parent) { - spl_add_classes(&(*ppce)->parent, list TSRMLS_CC); + zend_class_entry *pce = *ppce; + spl_add_class_name(list, pce TSRMLS_CC); + spl_add_interfaces(list, pce TSRMLS_CC); + while (pce->parent) { + pce = pce->parent; + spl_add_classes(&pce->parent, list TSRMLS_CC); } - spl_add_interfaces(list, *ppce TSRMLS_CC); return 0; } /* }}} */ |
