mirror of https://github.com/python/cpython
bpo-37388: Don't check encoding/errors during finalization (GH-19409)
str.encode() and str.decode() no longer check the encoding and errors in development mode or in debug mode during Python finalization. The codecs machinery can no longer work on very late calls to str.encode() and str.decode(). This change should help to call _PyObject_Dump() to debug during late Python finalization.
This commit is contained in:
parent
74e1b6b100
commit
d8acf0d9aa
|
@ -0,0 +1,4 @@
|
|||
str.encode() and str.decode() no longer check the encoding and errors in
|
||||
development mode or in debug mode during Python finalization. The codecs
|
||||
machinery can no longer work on very late calls to str.encode() and
|
||||
str.decode().
|
|
@ -451,6 +451,12 @@ unicode_check_encoding_errors(const char *encoding, const char *errors)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Disable checks during Python finalization. For example, it allows to
|
||||
call _PyObject_Dump() during finalization for debugging purpose. */
|
||||
if (interp->finalizing) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (encoding != NULL) {
|
||||
PyObject *handler = _PyCodec_Lookup(encoding);
|
||||
if (handler == NULL) {
|
||||
|
|
Loading…
Reference in New Issue