diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2009-09-07 10:05:36 +0000 |
|---|---|---|
| committer | Igor Sysoev <igor@sysoev.ru> | 2009-09-07 10:05:36 +0000 |
| commit | e018897a78e65aa2805fbf4bedc7439897fa3e87 (patch) | |
| tree | 9f4ac580dfca0ba8ac290cf25f592c36e26de421 | |
| parent | fbee1711143dc781c790388ebe177066f2d60484 (diff) | |
| download | nginx-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.c | 9 |
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); } |
