From 00ebd46dfc8623ac0bd436e5d0c47b53cac29fb9 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 23 Oct 2001 21:25:24 +0000 Subject: [PATCH] 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] --- Misc/ACKS | 1 + Objects/fileobject.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Misc/ACKS b/Misc/ACKS index 36e41e04218..18bac30b722 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 18f9ce2cc28..cda5ff25bf2 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();