summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Richards <rrichards@php.net>2004-01-29 00:33:20 +0000
committerRob Richards <rrichards@php.net>2004-01-29 00:33:20 +0000
commit109ea548713a88d74ce883c888b80d6a848f38fb (patch)
tree28e8fe3f43e4103ffbf57b471483e8db968b858f
parent37cf05d1b827ad018428bce3cac1c81758d440fd (diff)
downloadphp-git-109ea548713a88d74ce883c888b80d6a848f38fb.tar.gz
fix corruption when cloneDocument is not defined
-rw-r--r--ext/xsl/xsltprocessor.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/ext/xsl/xsltprocessor.c b/ext/xsl/xsltprocessor.c
index d02682e98f..37358d01be 100644
--- a/ext/xsl/xsltprocessor.c
+++ b/ext/xsl/xsltprocessor.c
@@ -297,7 +297,7 @@ PHP_FUNCTION(xsl_xsltprocessor_import_stylesheet)
xsltStylesheetPtr sheetp, oldsheetp;
xsl_object *intern;
php_libxml_node_object *docobj;
- int prevSubstValue, prevExtDtdValue, clone_docu;
+ int prevSubstValue, prevExtDtdValue, clone_docu = 0;
xmlNode *nodep;
zend_object_handlers *std_hnd;
zval *cloneDocu, *member;
@@ -333,9 +333,11 @@ PHP_FUNCTION(xsl_xsltprocessor_import_stylesheet)
MAKE_STD_ZVAL(member);
ZVAL_STRING(member, "cloneDocument", 0);
cloneDocu = std_hnd->read_property(id, member, 1 TSRMLS_CC);
- convert_to_long(cloneDocu);
+ if (Z_TYPE_P(cloneDocu) != IS_NULL) {
+ convert_to_long(cloneDocu);
+ clone_docu = Z_LVAL_P(cloneDocu);
+ }
efree(member);
- clone_docu = Z_LVAL_P(cloneDocu);
if (clone_docu == 0) {
/* check if the stylesheet is using xsl:key, if yes, we have to clone the document _always_ before a transformation */
nodep = xmlDocGetRootElement(sheetp->doc)->children;