diff options
author | Melvyn Sopacua <msopacua@php.net> | 2002-10-05 14:04:19 +0000 |
---|---|---|
committer | Melvyn Sopacua <msopacua@php.net> | 2002-10-05 14:04:19 +0000 |
commit | 1fbef62ae9e1dad3dd1993af39a00ec6247af74b (patch) | |
tree | 80331b7f6c76e960c490b183eeda4478a80f9027 | |
parent | cdc3b6d6525e893d257372465195785cd0f256b4 (diff) | |
download | php-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.c | 4 |
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); |