[3.10] gh-133767: Fix use-after-free in the unicode-escape decoder with an error handler (GH-129648) (GH-133944) (GH-134345)
If the error handler is used, a new bytes object is created to set as
the object attribute of UnicodeDecodeError, and that bytes object then
replaces the original data. A pointer to the decoded data will became invalid
after destroying that temporary bytes object. So we need other way to return
the first invalid escape from _PyUnicode_DecodeUnicodeEscapeInternal().
_PyBytes_DecodeEscape() does not have such issue, because it does not
use the error handlers registry, but it should be changed for compatibility
with _PyUnicode_DecodeUnicodeEscapeInternal().
(cherry picked from commit
9f69a58623bd01349a18ba0c7a9cb1dad6a51e8e)
(cherry picked from commit
6279eb8c076d89d3739a6edb393e43c7929b429d)
(cherry picked from commit
a75953b347716fff694aa59a7c7c2489fa50d1f5)
(cherry picked from commit
0c33e5baedf18ebcb04bc41dff7cfc614d5ea5fe)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>