diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2010-03-01 03:41:04 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2010-03-01 03:41:04 +0000 |
commit | 8748dc35800d7a4f46cf469ede12583b5fb52a9e (patch) | |
tree | c62612713c769b54d4a239824dcce7473bfa4681 /contrib/xml2/xslt_proc.c | |
parent | a7ac5c64fdeb7824e8033b990503bac159bcff6a (diff) |
Back-patch today's memory management fixups in contrib/xml2.
Prior to 8.3, these changes are not critical for compatibility with core
Postgres, since core had no libxml2 calls then. However there is still
a risk if contrib/xml2 is used along with libxml2 functionality in Perl
or other loadable modules. So back-patch to all versions.
Also back-patch addition of regression tests. I'm not sure how many of
the cases are interesting without the interaction with core xml code,
but a silly regression test is still better than none at all.
Diffstat (limited to 'contrib/xml2/xslt_proc.c')
-rw-r--r-- | contrib/xml2/xslt_proc.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/contrib/xml2/xslt_proc.c b/contrib/xml2/xslt_proc.c index 055bfcc1641..98a6257a3d6 100644 --- a/contrib/xml2/xslt_proc.c +++ b/contrib/xml2/xslt_proc.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/contrib/xml2/xslt_proc.c,v 1.15.2.1 2009/07/10 00:32:06 tgl Exp $ + * $PostgreSQL: pgsql/contrib/xml2/xslt_proc.c,v 1.15.2.2 2010/03/01 03:41:04 tgl Exp $ * * XSLT processing functions (requiring libxslt) * @@ -27,17 +27,17 @@ #include <libxslt/xsltutils.h> +/* externally accessible functions */ + +Datum xslt_process(PG_FUNCTION_ARGS); + /* declarations to come from xpath.c */ -extern void elog_error(int level, char *explain, int force); -extern void pgxml_parser_init(); -extern xmlChar *pgxml_texttoxmlchar(text *textstring); +extern void elog_error(const char *explain, bool force); +extern void pgxml_parser_init(void); /* local defs */ static void parse_params(const char **params, text *paramstr); -Datum xslt_process(PG_FUNCTION_ARGS); - - #define MAXPARAMS 20 /* must be even, see parse_params() */ @@ -80,7 +80,7 @@ xslt_process(PG_FUNCTION_ARGS) if (doctree == NULL) { xmlCleanupParser(); - elog_error(ERROR, "error parsing XML document", 0); + elog_error("error parsing XML document", false); PG_RETURN_NULL(); } @@ -94,7 +94,7 @@ xslt_process(PG_FUNCTION_ARGS) { xmlFreeDoc(doctree); xmlCleanupParser(); - elog_error(ERROR, "error parsing stylesheet as XML document", 0); + elog_error("error parsing stylesheet as XML document", false); PG_RETURN_NULL(); } @@ -109,7 +109,7 @@ xslt_process(PG_FUNCTION_ARGS) xmlFreeDoc(doctree); xsltCleanupGlobals(); xmlCleanupParser(); - elog_error(ERROR, "failed to parse stylesheet", 0); + elog_error("failed to parse stylesheet", false); PG_RETURN_NULL(); } |