From: Serhiy Storchaka Date: Mon, 17 Dec 2018 14:47:45 +0000 (+0200) Subject: bpo-35490: Remove the DecodeFSDefault return converter in AC. (#11152) X-Git-Tag: v3.8.0a1~261 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4db62e115891425db2a974142a72d8eaaf95eecb;p=thirdparty%2FPython%2Fcpython.git bpo-35490: Remove the DecodeFSDefault return converter in AC. (#11152) --- diff --git a/Modules/clinic/posixmodule.c.h b/Modules/clinic/posixmodule.c.h index 6d523bcc9ff4..eabfcf7fc83c 100644 --- a/Modules/clinic/posixmodule.c.h +++ b/Modules/clinic/posixmodule.c.h @@ -176,7 +176,7 @@ PyDoc_STRVAR(os_ttyname__doc__, #define OS_TTYNAME_METHODDEF \ {"ttyname", (PyCFunction)os_ttyname, METH_O, os_ttyname__doc__}, -static char * +static PyObject * os_ttyname_impl(PyObject *module, int fd); static PyObject * @@ -184,16 +184,11 @@ os_ttyname(PyObject *module, PyObject *arg) { PyObject *return_value = NULL; int fd; - char *_return_value; if (!PyArg_Parse(arg, "i:ttyname", &fd)) { goto exit; } - _return_value = os_ttyname_impl(module, fd); - if (_return_value == NULL) { - goto exit; - } - return_value = PyUnicode_DecodeFSDefault(_return_value); + return_value = os_ttyname_impl(module, fd); exit: return return_value; @@ -6758,4 +6753,4 @@ exit: #ifndef OS_GETRANDOM_METHODDEF #define OS_GETRANDOM_METHODDEF #endif /* !defined(OS_GETRANDOM_METHODDEF) */ -/*[clinic end generated code: output=7ebb53d872bab149 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=87a3ebadb91bc46b input=a9049054013a1b77]*/ diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 0ea391e799b9..41fedb097ed0 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -2647,7 +2647,7 @@ os_access_impl(PyObject *module, path_t *path, int mode, int dir_fd, #ifdef HAVE_TTYNAME /*[clinic input] -os.ttyname -> DecodeFSDefault +os.ttyname fd: int Integer file descriptor handle. @@ -2657,16 +2657,17 @@ os.ttyname -> DecodeFSDefault Return the name of the terminal device connected to 'fd'. [clinic start generated code]*/ -static char * +static PyObject * os_ttyname_impl(PyObject *module, int fd) -/*[clinic end generated code: output=ed16ad216d813591 input=5f72ca83e76b3b45]*/ +/*[clinic end generated code: output=c424d2e9d1cd636a input=9ff5a58b08115c55]*/ { char *ret; ret = ttyname(fd); - if (ret == NULL) - posix_error(); - return ret; + if (ret == NULL) { + return posix_error(); + } + return PyUnicode_DecodeFSDefault(ret); } #endif diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py index 1adabb95cc96..cd492b47a249 100755 --- a/Tools/clinic/clinic.py +++ b/Tools/clinic/clinic.py @@ -3166,16 +3166,6 @@ class float_return_converter(double_return_converter): cast = '(double)' -class DecodeFSDefault_return_converter(CReturnConverter): - type = 'char *' - - def render(self, function, data): - self.declare(data) - self.err_occurred_if_null_pointer("_return_value", data) - data.return_conversion.append( - 'return_value = PyUnicode_DecodeFSDefault(_return_value);\n') - - def eval_ast_expr(node, globals, *, filename='-'): """ Takes an ast.Expr node. Compiles and evaluates it.