summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2014-02-24 12:43:03 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2014-02-24 12:43:03 (GMT)
commit94ee389308ec9e0e07b3f7a944d5179aba540c5e (patch)
tree80bc231aff27723119beacbcfa2654b90f793060 /Include
parent20f8728bf0cce877c1908b15ddc59e2d1011ad0f (diff)
downloadcpython-94ee389308ec9e0e07b3f7a944d5179aba540c5e.zip
cpython-94ee389308ec9e0e07b3f7a944d5179aba540c5e.tar.gz
cpython-94ee389308ec9e0e07b3f7a944d5179aba540c5e.tar.bz2
Issue #19619: Blacklist non-text codecs in method API
str.encode, bytes.decode and bytearray.decode now use an internal API to throw LookupError for known non-text encodings, rather than attempting the encoding or decoding operation and then throwing a TypeError for an unexpected output type. The latter mechanism remains in place for third party non-text encodings. Backported changeset d68df99d7a57.
Diffstat (limited to 'Include')
-rw-r--r--Include/codecs.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/Include/codecs.h b/Include/codecs.h
index 0d9e9b4..5ca505f 100644
--- a/Include/codecs.h
+++ b/Include/codecs.h
@@ -94,6 +94,33 @@ PyAPI_FUNC(PyObject *) PyCodec_Decode(
const char *errors
);
+#ifndef PY_LIMITED_API
+/* Text codec specific encoding and decoding API.
+
+ Checks the encoding against a list of codecs which do not
+ implement a str<->bytes encoding before attempting the
+ operation.
+
+ Please note that these APIs are internal and should not
+ be used in Python C extensions.
+
+ */
+
+PyAPI_FUNC(PyObject *) _PyCodec_EncodeText(
+ PyObject *object,
+ const char *encoding,
+ const char *errors
+ );
+
+PyAPI_FUNC(PyObject *) _PyCodec_DecodeText(
+ PyObject *object,
+ const char *encoding,
+ const char *errors
+ );
+#endif
+
+
+
/* --- Codec Lookup APIs --------------------------------------------------
All APIs return a codec object with incremented refcount and are