Merge fix for issue #22166 from 3.4

This commit is contained in:
Nick Coghlan 2014-09-15 23:55:16 +12:00
commit a0f33759fa
5 changed files with 102 additions and 0 deletions

View file

@ -42,6 +42,12 @@ Copyright (c) Corporation for National Research Initiatives.
#include <windows.h>
#endif
/*[clinic input]
module _codecs
[clinic start generated code]*/
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=e1390e3da3cb9deb]*/
/* --- Registry ----------------------------------------------------------- */
PyDoc_STRVAR(register__doc__,
@ -138,6 +144,53 @@ codec_decode(PyObject *self, PyObject *args, PyObject *kwargs)
/* --- Helpers ------------------------------------------------------------ */
/*[clinic input]
_codecs._forget_codec
encoding: str
/
Purge the named codec from the internal codec lookup cache
[clinic start generated code]*/
PyDoc_STRVAR(_codecs__forget_codec__doc__,
"_forget_codec($module, encoding, /)\n"
"--\n"
"\n"
"Purge the named codec from the internal codec lookup cache");
#define _CODECS__FORGET_CODEC_METHODDEF \
{"_forget_codec", (PyCFunction)_codecs__forget_codec, METH_VARARGS, _codecs__forget_codec__doc__},
static PyObject *
_codecs__forget_codec_impl(PyModuleDef *module, const char *encoding);
static PyObject *
_codecs__forget_codec(PyModuleDef *module, PyObject *args)
{
PyObject *return_value = NULL;
const char *encoding;
if (!PyArg_ParseTuple(args,
"s:_forget_codec",
&encoding))
goto exit;
return_value = _codecs__forget_codec_impl(module, encoding);
exit:
return return_value;
}
static PyObject *
_codecs__forget_codec_impl(PyModuleDef *module, const char *encoding)
/*[clinic end generated code: output=a75e631591702a5c input=18d5d92d0e386c38]*/
{
if (_PyCodec_Forget(encoding) < 0) {
return NULL;
};
Py_RETURN_NONE;
}
static
PyObject *codec_tuple(PyObject *unicode,
Py_ssize_t len)
@ -1172,6 +1225,7 @@ static PyMethodDef _codecs_functions[] = {
register_error__doc__},
{"lookup_error", lookup_error, METH_VARARGS,
lookup_error__doc__},
_CODECS__FORGET_CODEC_METHODDEF
{NULL, NULL} /* sentinel */
};