summaryrefslogtreecommitdiffstats
path: root/Modules/_io/_iomodule.c
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2009-12-13 19:30:15 (GMT)
committerBenjamin Peterson <benjamin@python.org>2009-12-13 19:30:15 (GMT)
commit6b59f77c43c492f4c707ad4d8e2d2b0b871414e8 (patch)
tree68d0d1953d03c1dda5c0f9ebc8c346f63d6e70ad /Modules/_io/_iomodule.c
parentbb4cd51982df53099990a11969afe57beae2d912 (diff)
downloadcpython-6b59f77c43c492f4c707ad4d8e2d2b0b871414e8.zip
cpython-6b59f77c43c492f4c707ad4d8e2d2b0b871414e8.tar.gz
cpython-6b59f77c43c492f4c707ad4d8e2d2b0b871414e8.tar.bz2
Merged revisions 76806,76808 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ................ r76806 | benjamin.peterson | 2009-12-13 13:25:34 -0600 (Sun, 13 Dec 2009) | 14 lines Merged revisions 76805 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r76805 | benjamin.peterson | 2009-12-13 13:19:07 -0600 (Sun, 13 Dec 2009) | 7 lines accept None as the same as having passed no argument in file types #7349 This is for consistency with imitation file objects like StringIO and BytesIO. This commit also adds a few tests, where they were lacking for concerned methods. ........ ................ r76808 | benjamin.peterson | 2009-12-13 13:28:09 -0600 (Sun, 13 Dec 2009) | 9 lines Merged revisions 76807 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r76807 | benjamin.peterson | 2009-12-13 13:27:02 -0600 (Sun, 13 Dec 2009) | 1 line remove unused variable ........ ................
Diffstat (limited to 'Modules/_io/_iomodule.c')
-rw-r--r--Modules/_io/_iomodule.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/Modules/_io/_iomodule.c b/Modules/_io/_iomodule.c
index 02776f3..dfd66aa 100644
--- a/Modules/_io/_iomodule.c
+++ b/Modules/_io/_iomodule.c
@@ -561,6 +561,30 @@ PyNumber_AsOff_t(PyObject *item, PyObject *err)
return result;
}
+
+/* Basically the "n" format code with the ability to turn None into -1. */
+int
+_PyIO_ConvertSsize_t(PyObject *obj, void *result) {
+ Py_ssize_t limit;
+ if (obj == Py_None) {
+ limit = -1;
+ }
+ else if (PyNumber_Check(obj)) {
+ limit = PyNumber_AsSsize_t(obj, PyExc_OverflowError);
+ if (limit == -1 && PyErr_Occurred())
+ return 0;
+ }
+ else {
+ PyErr_Format(PyExc_TypeError,
+ "integer argument expected, got '%.200s'",
+ Py_TYPE(obj)->tp_name);
+ return 0;
+ }
+ *((Py_ssize_t *)result) = limit;
+ return 1;
+}
+
+
static int
iomodule_traverse(PyObject *mod, visitproc visit, void *arg) {
_PyIO_State *state = IO_MOD_STATE(mod);
@@ -574,6 +598,7 @@ iomodule_traverse(PyObject *mod, visitproc visit, void *arg) {
return 0;
}
+
static int
iomodule_clear(PyObject *mod) {
_PyIO_State *state = IO_MOD_STATE(mod);
@@ -591,6 +616,7 @@ iomodule_free(PyObject *mod) {
iomodule_clear(mod);
}
+
/*
* Module definition
*/