summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/xslt/php_xslt.h1
-rw-r--r--ext/xslt/xslt.c28
2 files changed, 25 insertions, 4 deletions
diff --git a/ext/xslt/php_xslt.h b/ext/xslt/php_xslt.h
index 3825cb88d3..3575804425 100644
--- a/ext/xslt/php_xslt.h
+++ b/ext/xslt/php_xslt.h
@@ -46,6 +46,7 @@ typedef struct {
} xslt_args;
extern xslt_args *parse_xslt_arguments(char *, char *, char *, char **);
+extern void free_xslt_arguments(xslt_args *to_free);
extern void assign_xslt_handler(struct xslt_function **, zval **);
extern void free_xslt_handler(struct xslt_function *);
diff --git a/ext/xslt/xslt.c b/ext/xslt/xslt.c
index 3e8e56cd9d..dd406a1f5c 100644
--- a/ext/xslt/xslt.c
+++ b/ext/xslt/xslt.c
@@ -67,10 +67,10 @@ static char *find_xslt_argument(const char **argv, const char *key)
/* {{{ parse_xslt_arguments()
Parse an XSLT argument buffer */
-extern xslt_args *parse_xslt_arguments(char *xml,
- char *xsl,
- char *result,
- char **argv)
+extern xslt_args *parse_xslt_arguments(char *xml,
+ char *xsl,
+ char *result,
+ char **argv)
{
xslt_args *return_value;
@@ -119,6 +119,26 @@ extern xslt_args *parse_xslt_arguments(char *xml,
}
/* }}} */
+/* {{{ free_xslt_arguments()
+ Free's an XSLT argument list returned from parse_xslt_arguments() */
+extern void free_xslt_arguments(xslt_args *to_free)
+{
+ if (to_free->xml.ptr) {
+ efree(to_free->xml.ptr);
+ }
+
+ if (to_free->xsl.ptr) {
+ efree(to_free->xsl.ptr);
+ }
+
+ if (to_free->result.ptr) {
+ efree(to_free->result.ptr);
+ }
+
+ efree(to_free);
+}
+/* }}} */
+
/* {{{ call_xslt_function()
Call an XSLT handler */
extern void call_xslt_function(char *name,