summaryrefslogtreecommitdiff
path: root/ext/xsl
diff options
context:
space:
mode:
Diffstat (limited to 'ext/xsl')
-rw-r--r--ext/xsl/xsltprocessor.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/ext/xsl/xsltprocessor.c b/ext/xsl/xsltprocessor.c
index 89dc4c4e04..d5924d9d8b 100644
--- a/ext/xsl/xsltprocessor.c
+++ b/ext/xsl/xsltprocessor.c
@@ -103,7 +103,7 @@ static char **php_xsl_xslt_make_params(HashTable *parht, int xpath_params TSRMLS
if (!xpath_params) {
xpath_expr = php_xsl_xslt_string_to_xpathexpr(Z_STRVAL_PP(value) TSRMLS_CC);
} else {
- xpath_expr = Z_STRVAL_PP(value);
+ xpath_expr = estrndup(Z_STRVAL_PP(value), strlen(Z_STRVAL_PP(value)));
}
if (xpath_expr) {
params[i++] = string_key;
@@ -207,6 +207,10 @@ PHP_FUNCTION(xsl_xsltprocessor_transform_to_doc)
}
if (params) {
+ clone = 0;
+ while(params[clone]) {
+ efree(params[clone++]);
+ }
efree(params);
}
@@ -258,6 +262,10 @@ PHP_FUNCTION(xsl_xsltprocessor_transform_to_uri)
}
if (params) {
+ clone = 0;
+ while(params[clone]) {
+ efree(params[clone++]);
+ }
efree(params);
}
@@ -311,6 +319,10 @@ PHP_FUNCTION(xsl_xsltprocessor_transform_to_xml)
}
if (params) {
+ clone = 0;
+ while(params[clone]) {
+ efree(params[clone++]);
+ }
efree(params);
}