diff options
author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2013-07-30 15:31:26 +0200 |
---|---|---|
committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2013-07-30 15:31:26 +0200 |
commit | f48cd5bbcf19736895d4ebd3f979381a004fcd15 (patch) | |
tree | aa35df86c8279307aa7aa93b8a42efc463d75728 /bindings/python | |
parent | 6af73738f660661ce4c4a42e48f561306726d106 (diff) | |
parent | bd0f935a2450b5779a01e9e5053267ec4cac94d6 (diff) | |
download | lasso-f48cd5bbcf19736895d4ebd3f979381a004fcd15.tar.gz lasso-f48cd5bbcf19736895d4ebd3f979381a004fcd15.tar.xz lasso-f48cd5bbcf19736895d4ebd3f979381a004fcd15.zip |
Merge remote-tracking branch 'origin/libxml2.9-compat'
Diffstat (limited to 'bindings/python')
-rw-r--r-- | bindings/python/wrapper_top.c | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/bindings/python/wrapper_top.c b/bindings/python/wrapper_top.c index c80bf1d6..a9312b7c 100644 --- a/bindings/python/wrapper_top.c +++ b/bindings/python/wrapper_top.c @@ -103,28 +103,40 @@ get_dict_from_hashtable_of_strings(GHashTable *value) return proxy; } +static xmlBuffer* +xmlnode_to_xmlbuffer(xmlNode *node) +{ + xmlOutputBufferPtr output_buffer; + xmlBuffer *buffer; + + if (! node) + return NULL; + + buffer = xmlBufferCreate(); + output_buffer = xmlOutputBufferCreateBuffer(buffer, NULL); + xmlNodeDumpOutput(output_buffer, NULL, node, 0, 0, NULL); + xmlOutputBufferClose(output_buffer); + xmlBufferAdd(buffer, BAD_CAST "", 1); + + return buffer; +} + static PyObject* get_pystring_from_xml_node(xmlNode *xmlnode) { - xmlOutputBufferPtr buf; PyObject *pystring = NULL; + xmlBuffer *buffer; if (xmlnode == NULL) { return NULL; } + buffer = xmlnode_to_xmlbuffer(xmlnode); - buf = xmlAllocOutputBuffer(NULL); - if (buf == NULL) { + if (buffer == NULL) { pystring = NULL; } else { - xmlNodeDumpOutput(buf, NULL, xmlnode, 0, 1, NULL); - xmlOutputBufferFlush(buf); - if (buf->conv == NULL) { - pystring = PyString_FromString((char*)buf->buffer->content); - } else { - pystring = PyString_FromString((char*)buf->conv->content); - } - xmlOutputBufferClose(buf); + pystring = PyString_FromString((char*)xmlBufferContent(buffer)); + xmlBufferFree(buffer); } return pystring; |