]> granicus.if.org Git - php/commitdiff
- Allow xpl/simplexml integration with simplexml being built shared
authorMarcus Boerger <helly@php.net>
Sat, 1 Oct 2005 15:41:37 +0000 (15:41 +0000)
committerMarcus Boerger <helly@php.net>
Sat, 1 Oct 2005 15:41:37 +0000 (15:41 +0000)
ext/simplexml/config.m4
ext/spl/spl_sxe.c

index e4983504662d9e3bdc6ce6fb0975c7a186f230e1..7bc864409e58109838476ed188506f2b5450de54 100644 (file)
@@ -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
index 463f7cad1bf6230264ea08a5aa05b1cb7d4260eb..5a2cd7e72caedc029bc4f900909d3bdcf072984c 100755 (executable)
@@ -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();
-
-       if (!spl_ce_SimpleXML_Element) {
+       zend_class_entry **pce, *spl_ce_SimpleXMLElement;
+       
+       if (zend_hash_find(CG(class_table), "simplexmlelement", sizeof("SimpleXMLElement"), (void **) &pce) == FAILURE) {
+               spl_ce_SimpleXMLIterator = NULL;
                return SUCCESS; /* SimpleXML must be initialized before */
        }
+       
+       spl_ce_SimpleXMLElement = *pce;
 
-       REGISTER_SPL_SUB_CLASS_EX(SimpleXMLIterator, SimpleXML_Element, sxe_object_new, spl_funcs_SimpleXMLIterator);
+       REGISTER_SPL_SUB_CLASS_EX(SimpleXMLIterator, SimpleXMLElement, sxe_object_new, spl_funcs_SimpleXMLIterator);
        REGISTER_SPL_IMPLEMENTS(SimpleXMLIterator, RecursiveIterator);
 
        return SUCCESS;