X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Frecord_conv.c;h=94447f5ec02af4f127f3fe3f8b4cce47011627eb;hb=d775854eb4b203433c54239cc447f20511850ef9;hp=bf32f62673540865e0e85c05d541fa9146adc312;hpb=5e758b60195c4115994972066dbeed7529a83cc9;p=yaz-moved-to-github.git diff --git a/src/record_conv.c b/src/record_conv.c index bf32f62..94447f5 100644 --- a/src/record_conv.c +++ b/src/record_conv.c @@ -2,7 +2,7 @@ * Copyright (C) 2005-2006, Index Data ApS * See the file LICENSE for details. * - * $Id: record_conv.c,v 1.8 2006-05-08 16:58:25 quinn Exp $ + * $Id: record_conv.c,v 1.10 2006-05-26 15:07:08 adam Exp $ */ /** * \file record_conv.c @@ -440,19 +440,33 @@ int yaz_record_conv_record(yaz_record_conv_t p, xmlDocPtr res = xsltApplyStylesheet(r->u.xslt.xsp, doc, 0); if (res) { - xmlChar *out_buf; + xmlChar *out_buf = 0; int out_len; - xmlDocDumpFormatMemory (res, &out_buf, &out_len, 1); - - wrbuf_rewind(record); - wrbuf_write(record, (const char *) out_buf, out_len); - xmlFree(out_buf); +#if HAVE_XSLTSAVERESULTTOSTRING + xsltSaveResultToString(&out_buf, &out_len, res, + r->u.xslt.xsp); +#else + xmlDocDumpFormatMemory (res, &out_buf, &out_len, 1); +#endif + if (!out_buf) + { + wrbuf_printf(p->wr_error, + "xsltSaveResultToString failed"); + ret = -1; + } + else + { + wrbuf_rewind(record); + wrbuf_write(record, (const char *) out_buf, out_len); + + xmlFree(out_buf); + } xmlFreeDoc(res); } else { - wrbuf_printf(p->wr_error, "xsltApplyStylesheet faailed"); + wrbuf_printf(p->wr_error, "xsltApplyStylesheet failed"); ret = -1; } xmlFreeDoc(doc);