From: Marcus Boerger Date: Sat, 1 Oct 2005 15:55:27 +0000 (+0000) Subject: - MFB spl/simplexml integration (when sxe is shared) X-Git-Tag: RELEASE_0_9_0~64 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bfaf987363a0caa250777f13cbfb291dbd67b486;p=php - MFB spl/simplexml integration (when sxe is shared) --- diff --git a/ext/simplexml/config.m4 b/ext/simplexml/config.m4 index e498350466..7bc864409e 100644 --- a/ext/simplexml/config.m4 +++ b/ext/simplexml/config.m4 @@ -23,4 +23,5 @@ if test "$PHP_SIMPLEXML" != "no"; then AC_MSG_ERROR([xml2-config not found. Please check your libxml2 installation.]) ]) PHP_ADD_EXTENSION_DEP(simplexml, libxml) + PHP_ADD_EXTENSION_DEP(simplexml, spl, true) fi diff --git a/ext/spl/config.m4 b/ext/spl/config.m4 index eea8092166..8f0b19084b 100755 --- a/ext/spl/config.m4 +++ b/ext/spl/config.m4 @@ -10,5 +10,4 @@ if test "$PHP_SPL" != "no"; then fi AC_DEFINE(HAVE_SPL, 1, [Whether you want SPL (Standard PHP Library) support]) PHP_NEW_EXTENSION(spl, php_spl.c spl_functions.c spl_engine.c spl_iterators.c spl_array.c spl_directory.c spl_sxe.c spl_exceptions.c spl_observer.c, $ext_shared) - PHP_ADD_EXTENSION_DEP(spl, simplexml) fi diff --git a/ext/spl/spl_sxe.c b/ext/spl/spl_sxe.c index 4120f640aa..3f5ff4fa8c 100755 --- a/ext/spl/spl_sxe.c +++ b/ext/spl/spl_sxe.c @@ -146,13 +146,16 @@ static zend_function_entry spl_funcs_SimpleXMLIterator[] = { SPL_API PHP_MINIT_FUNCTION(spl_sxe) /* {{{ */ { - zend_class_entry *spl_ce_SimpleXML_Element = sxe_get_element_class_entry(TSRMLS_C); + zend_class_entry **pce, *spl_ce_SimpleXMLElement; - if (!spl_ce_SimpleXML_Element) { + if (zend_hash_find(CG(class_table), "simplexmlelement", sizeof("SimpleXMLElement"), (void **) &pce) == FAILURE) { + spl_ce_SimpleXMLIterator = NULL; return SUCCESS; /* SimpleXML must be initialized before */ } - REGISTER_SPL_SUB_CLASS_EX(SimpleXMLIterator, SimpleXML_Element, sxe_object_new, spl_funcs_SimpleXMLIterator); + spl_ce_SimpleXMLElement = *pce; + + REGISTER_SPL_SUB_CLASS_EX(SimpleXMLIterator, SimpleXMLElement, sxe_object_new, spl_funcs_SimpleXMLIterator); REGISTER_SPL_IMPLEMENTS(SimpleXMLIterator, RecursiveIterator); return SUCCESS;