diff options
author | Michael van Tellingen <michael@mvantellingen.nl> | 2016-07-18 22:00:13 +0200 |
---|---|---|
committer | Michael van Tellingen <michael@mvantellingen.nl> | 2016-07-18 22:00:13 +0200 |
commit | a4437df9bda4475db7c26bef3cda9d7394590ef3 (patch) | |
tree | 74437f420355d8c007e5e48062b27ec6b7942beb | |
parent | eb88652a6c645be95696bbdee6f44b202c9c58ff (diff) | |
download | python-lxml-a4437df9bda4475db7c26bef3cda9d7394590ef3.tar.gz |
Fix setting the base url for etree.Resolver.resolve_string
See https://github.com/GNOME/libxml2/blob/master/parserInternals.c#L1549
We seem to get away with only setting the _filename so that relative
url's are resolved based on the value.
Fixes https://bugs.launchpad.net/lxml/+bug/1568167
-rw-r--r-- | src/lxml/includes/xmlparser.pxd | 1 | ||||
-rw-r--r-- | src/lxml/parser.pxi | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/src/lxml/includes/xmlparser.pxd b/src/lxml/includes/xmlparser.pxd index 74fe7586..187b079f 100644 --- a/src/lxml/includes/xmlparser.pxd +++ b/src/lxml/includes/xmlparser.pxd @@ -56,6 +56,7 @@ cdef extern from "libxml/tree.h": const_xmlChar* base const_xmlChar* cur const_xmlChar* end + const_char *filename ctypedef struct xmlParserInputBuffer: void* context diff --git a/src/lxml/parser.pxi b/src/lxml/parser.pxi index 9431b21e..0c0a8b20 100644 --- a/src/lxml/parser.pxi +++ b/src/lxml/parser.pxi @@ -447,6 +447,8 @@ cdef xmlparser.xmlParserInput* _local_resolver(const_char* c_url, const_char* c_ data = doc_ref._data_bytes c_input = xmlparser.xmlNewInputStream(c_context) if c_input is not NULL: + if doc_ref._filename: + c_input.filename = <char *>tree.xmlStrdup(_xcstr(doc_ref._filename)) c_input.base = _xcstr(data) c_input.length = python.PyBytes_GET_SIZE(data) c_input.cur = c_input.base |