diff options
author | Antoine Brodin <antoine@FreeBSD.org> | 2019-03-08 06:47:53 +0000 |
---|---|---|
committer | Antoine Brodin <antoine@FreeBSD.org> | 2019-03-08 06:47:53 +0000 |
commit | 89b855b456dc7fd5cc9b62ffec24f741a26e199f (patch) | |
tree | a6ea7dd7457a1f45b4e780a632e5ff4d739a677c /textproc/libxml2 | |
parent | b8165b1aefc22e44358e0869e8b29353ea9ba005 (diff) | |
download | ports-89b855b456dc7fd5cc9b62ffec24f741a26e199f.tar.gz ports-89b855b456dc7fd5cc9b62ffec24f741a26e199f.zip |
PR: 234633
Obtained from: Fedora / openSuse
Notes
Notes:
svn path=/head/; revision=495019
Diffstat (limited to 'textproc/libxml2')
-rw-r--r-- | textproc/libxml2/files/patch-python_libxml.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/textproc/libxml2/files/patch-python_libxml.c b/textproc/libxml2/files/patch-python_libxml.c new file mode 100644 index 000000000000..caef687fc265 --- /dev/null +++ b/textproc/libxml2/files/patch-python_libxml.c @@ -0,0 +1,35 @@ +# Workaround https://bugzilla.gnome.org/show_bug.cgi?id=789714 +# Obtained from openSuse / Fedora + +--- python/libxml.c.orig 2016-06-07 10:04:14 UTC ++++ python/libxml.c +@@ -1620,6 +1620,7 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU + PyObject *message; + PyObject *result; + char str[1000]; ++ unsigned char *ptr = (unsigned char *)str; + + #ifdef DEBUG_ERROR + printf("libxml_xmlErrorFuncHandler(%p, %s, ...) called\n", ctx, msg); +@@ -1636,12 +1637,20 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU + str[999] = 0; + va_end(ap); + ++#if PY_MAJOR_VERSION >= 3 ++ /* Ensure the error string doesn't start at UTF8 continuation. */ ++ while (*ptr && (*ptr & 0xc0) == 0x80) ++ ptr++; ++#endif ++ + list = PyTuple_New(2); + PyTuple_SetItem(list, 0, libxml_xmlPythonErrorFuncCtxt); + Py_XINCREF(libxml_xmlPythonErrorFuncCtxt); +- message = libxml_charPtrConstWrap(str); ++ message = libxml_charPtrConstWrap(ptr); + PyTuple_SetItem(list, 1, message); + result = PyEval_CallObject(libxml_xmlPythonErrorFuncHandler, list); ++ /* Forget any errors caused in the error handler. */ ++ PyErr_Clear(); + Py_XDECREF(list); + Py_XDECREF(result); + } |