From 848037c1476ddf86dd2798fca35527a63c764a8a Mon Sep 17 00:00:00 2001 From: ngie-eign <1574099+ngie-eign@users.noreply.github.com> Date: Sat, 2 Mar 2019 23:28:26 -0800 Subject: [PATCH] Use names SEEK_SET, etc instead of magic number (GH-12057) The previous code hardcoded `SEEK_SET`, etc. While it's very unlikely that these values will change, it's best to use the definitions to avoid there being mismatches in behavior with the code in the future. Signed-off-by: Enji Cooper --- Lib/_pyio.py | 6 +++--- Modules/_io/textio.c | 14 ++++++++------ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Lib/_pyio.py b/Lib/_pyio.py index e4a879941e1..b0593c3d3ab 100644 --- a/Lib/_pyio.py +++ b/Lib/_pyio.py @@ -2386,18 +2386,18 @@ def _reset_encoder(position): raise ValueError("tell on closed file") if not self._seekable: raise UnsupportedOperation("underlying stream is not seekable") - if whence == 1: # seek relative to current position + if whence == SEEK_CUR: if cookie != 0: raise UnsupportedOperation("can't do nonzero cur-relative seeks") # Seeking to the current position should attempt to # sync the underlying buffer with the current position. whence = 0 cookie = self.tell() - if whence == 2: # seek relative to end of file + elif whence == SEEK_END: if cookie != 0: raise UnsupportedOperation("can't do nonzero end-relative seeks") self.flush() - position = self.buffer.seek(0, 2) + position = self.buffer.seek(0, whence) self._set_decoded_chars('') self._snapshot = None if self._decoder: diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c index 14f94885b5f..0f0092fd741 100644 --- a/Modules/_io/textio.c +++ b/Modules/_io/textio.c @@ -2344,7 +2344,8 @@ _io_TextIOWrapper_seek_impl(textio *self, PyObject *cookieObj, int whence) goto fail; } - if (whence == 1) { + switch (whence) { + case SEEK_CUR: /* seek relative to current position */ cmp = PyObject_RichCompareBool(cookieObj, _PyLong_Zero, Py_EQ); if (cmp < 0) @@ -2362,8 +2363,7 @@ _io_TextIOWrapper_seek_impl(textio *self, PyObject *cookieObj, int whence) cookieObj = _PyObject_CallMethodId((PyObject *)self, &PyId_tell, NULL); if (cookieObj == NULL) goto fail; - } - else if (whence == 2) { + case SEEK_END: /* seek relative to end of file */ cmp = PyObject_RichCompareBool(cookieObj, _PyLong_Zero, Py_EQ); if (cmp < 0) @@ -2401,10 +2401,12 @@ _io_TextIOWrapper_seek_impl(textio *self, PyObject *cookieObj, int whence) } } return res; - } - else if (whence != 0) { + case SEEK_SET: + break; + default: PyErr_Format(PyExc_ValueError, - "invalid whence (%d, should be 0, 1 or 2)", whence); + "invalid whence (%d, should be %d, %d or %d)", whence, + SEEK_SET, SEEK_CUR, SEEK_END); goto fail; }