STINNER Victor added the comment: >> Oh, PyUnicode_Tailmatch() documentation doesn't mention that the function >> can fail. > > But it does. > > .. c:function:: int PyUnicode_Tailmatch(PyObject *str, PyObject *substr, \ > Py_ssize_t start, Py_ssize_t end, int direction) > > Return 1 if *substr* matches ``str[start:end]`` at the given tail end > (*direction* == -1 means to do a prefix match, *direction* == 1 a suffix > match), > 0 otherwise. Return ``-1`` if an error occurred.
Oh, I read the "documentation" in unicodeobject.h: /* Return 1 if substr matches str[start:end] at the given tail end, 0 otherwise. */ The problem is that tailmatch() returns 0 if PyUnicode_READY() failed. It is a bug, even if it cannot occur because PyUnicode_Tailmatch() checks that the both strings are ready. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue16281> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com