summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2009-09-07 10:05:36 +0000
committerIgor Sysoev <igor@sysoev.ru>2009-09-07 10:05:36 +0000
commite018897a78e65aa2805fbf4bedc7439897fa3e87 (patch)
tree9f4ac580dfca0ba8ac290cf25f592c36e26de421
parentfbee1711143dc781c790388ebe177066f2d60484 (diff)
downloadnginx-e018897a78e65aa2805fbf4bedc7439897fa3e87.tar.gz
nginx-e018897a78e65aa2805fbf4bedc7439897fa3e87.tar.bz2
merge r2984, r2985, r3000:
XSLT filter fixes: *) preserve XML wellFormed field before freeing memory *) fix libxml2 error message
-rw-r--r--src/http/modules/ngx_http_xslt_filter_module.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/http/modules/ngx_http_xslt_filter_module.c b/src/http/modules/ngx_http_xslt_filter_module.c
index ab3118f78..afa605a23 100644
--- a/src/http/modules/ngx_http_xslt_filter_module.c
+++ b/src/http/modules/ngx_http_xslt_filter_module.c
@@ -194,7 +194,7 @@ ngx_module_t ngx_http_xslt_filter_module = {
NULL, /* init process */
NULL, /* init thread */
NULL, /* exit thread */
- ngx_http_xslt_filter_exit, /* exit process */
+ ngx_http_xslt_filter_exit, /* exit process */
ngx_http_xslt_filter_exit, /* exit master */
NGX_MODULE_V1_PADDING
};
@@ -247,6 +247,7 @@ ngx_http_xslt_header_filter(ngx_http_request_t *r)
static ngx_int_t
ngx_http_xslt_body_filter(ngx_http_request_t *r, ngx_chain_t *in)
{
+ int wellFormed;
ngx_chain_t *cl;
ngx_http_xslt_filter_ctx_t *ctx;
@@ -288,9 +289,11 @@ ngx_http_xslt_body_filter(ngx_http_request_t *r, ngx_chain_t *in)
ctx->doc->extSubset = NULL;
#endif
+ wellFormed = ctx->ctxt->wellFormed;
+
xmlFreeParserCtxt(ctx->ctxt);
- if (ctx->ctxt->wellFormed) {
+ if (wellFormed) {
return ngx_http_xslt_send(r, ctx,
ngx_http_xslt_apply_stylesheet(r, ctx));
}
@@ -717,7 +720,7 @@ ngx_http_xslt_sax_error(void *data, const char *msg, ...)
while (--n && (buf[n] == CR || buf[n] == LF)) { /* void */ }
ngx_log_error(NGX_LOG_ERR, ctx->request->connection->log, 0,
- "libxml2 error: \"%*s\"", n, buf);
+ "libxml2 error: \"%*s\"", n + 1, buf);
}