From: Guido van Rossum Date: Tue, 23 Oct 2001 21:25:24 +0000 (+0000) Subject: SF patch #474175 (Jay T Miller): file.readinto arg parsing bug X-Git-Tag: v2.2.1c1~1088 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=00ebd46dfc8623ac0bd436e5d0c47b53cac29fb9;p=python SF patch #474175 (Jay T Miller): file.readinto arg parsing bug The C-code in fileobject.readinto(buffer) which parses the arguments assumes that size_t is interchangeable with int: size_t ntodo, ndone, nnow; if (f->f_fp == NULL) return err_closed(); if (!PyArg_Parse(args, "w#", &ptr, &ntodo)) return NULL; This causes a problem on Alpha / Tru64 / OSF1 v5.1 where size_t is a long and sizeof(long) != sizeof(int). The patch I'm proposing declares ntodo as an int. An alternative might be to redefine w# to expect size_t. [We can't change w# because there are probably third party modules relying on it. GvR] --- diff --git a/Misc/ACKS b/Misc/ACKS index 36e41e0421..18bac30b72 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -279,6 +279,7 @@ Dieter Maurer Greg McFarlane Michael McLay Gordon McMillan +Jay T. Miller Caolan McNamara Craig McPheeters Lambert Meertens diff --git a/Objects/fileobject.c b/Objects/fileobject.c index 18f9ce2cc2..cda5ff25bf 100644 --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@ -606,7 +606,8 @@ static PyObject * file_readinto(PyFileObject *f, PyObject *args) { char *ptr; - size_t ntodo, ndone, nnow; + int ntodo; + size_t ndone, nnow; if (f->f_fp == NULL) return err_closed();