summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMelvyn Sopacua <msopacua@php.net>2002-10-05 14:04:19 +0000
committerMelvyn Sopacua <msopacua@php.net>2002-10-05 14:04:19 +0000
commit1fbef62ae9e1dad3dd1993af39a00ec6247af74b (patch)
tree80331b7f6c76e960c490b183eeda4478a80f9027
parentcdc3b6d6525e893d257372465195785cd0f256b4 (diff)
downloadphp-git-1fbef62ae9e1dad3dd1993af39a00ec6247af74b.tar.gz
(xslt: error_print) Fixes a leak when multiple error messages are issued
during a transformation. # It's probably better to wrap this in an internal function, since it's # easily forgotten.
-rw-r--r--ext/xslt/sablot.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ext/xslt/sablot.c b/ext/xslt/sablot.c
index 109e14ecbb..a4c9778a3b 100644
--- a/ext/xslt/sablot.c
+++ b/ext/xslt/sablot.c
@@ -1633,6 +1633,10 @@ static MH_ERROR error_print(void *user_data, SablotHandle proc, MH_ERROR code, M
msgbuf = emalloc((sizeof(msgformat) - 4) + strlen(errmsg) + strlen(errline) + 1);
sprintf(msgbuf, msgformat, errline, errmsg);
+ /* If an old message exists, remove it -> leak */
+ if (XSLT_ERRSTR(handle))
+ efree(XSLT_ERRSTR(handle));
+
/* Copy the error message onto the handle for use when
the xslt_error function is called */
XSLT_ERRSTR(handle) = estrdup(errmsg);