]> git.kaiwu.me - nginx.git/commitdiff
merge r2984, r2985, r3000:
authorIgor Sysoev <igor@sysoev.ru>
Mon, 7 Sep 2009 10:05:36 +0000 (10:05 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 7 Sep 2009 10:05:36 +0000 (10:05 +0000)
XSLT filter fixes:

*) preserve XML wellFormed field before freeing memory
*) fix libxml2 error message

src/http/modules/ngx_http_xslt_filter_module.c

index ab3118f78c0208fd4bf6903a3c1fd6a227599458..afa605a232c3ec1108fd0f8a77499a3ddec6dac8 100644 (file)
@@ -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);
 }