From 9ec17a841d9a1116f658d24fadae1ba8e4a28beb Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Thu, 11 Nov 2010 23:08:33 +0300 Subject: [PATCH] msxml3: Fix a ::get_xml() for libxml2 without xmlSaveToBuffer. --- dlls/msxml3/domdoc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c index e7c15e3bf64..a7e73422fa9 100644 --- a/dlls/msxml3/domdoc.c +++ b/dlls/msxml3/domdoc.c @@ -1281,6 +1281,10 @@ static HRESULT WINAPI domdoc_put_dataType( return IXMLDOMNode_put_dataType( IXMLDOMNode_from_impl(&This->node), dataTypeName ); } +static int XMLCALL domdoc_get_xml_writecallback(void *ctx, const char *data, int len) +{ + return xmlBufferAdd((xmlBufferPtr)ctx, (xmlChar*)data, len) == 0 ? len : 0; +} static HRESULT WINAPI domdoc_get_xml( IXMLDOMDocument3 *iface, @@ -1305,7 +1309,8 @@ static HRESULT WINAPI domdoc_get_xml( options = xmldoc_has_decl(get_doc(This)) ? XML_SAVE_NO_DECL : 0; options |= XML_SAVE_FORMAT; - ctxt = xmlSaveToBuffer(buf, "UTF-8", options); + ctxt = xmlSaveToIO(domdoc_get_xml_writecallback, NULL, buf, "UTF-8", options); + if(!ctxt) { xmlBufferFree(buf);