[Python-checkins] python/dist/src/Objects fileobject.c, 2.179,
2.179.8.1
loewis at users.sourceforge.net
loewis at users.sourceforge.net
Thu Sep 4 13:02:22 EDT 2003
Update of /cvsroot/python/python/dist/src/Objects
In directory sc8-pr-cvs1:/tmp/cvs-serv6327/Objects
Modified Files:
Tag: release23-maint
fileobject.c
Log Message:
Patch #788249: Pass an explicit buffer to setvbuf in PyFile_SetBufSize().
Fixes #603724.
Index: fileobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/fileobject.c,v
retrieving revision 2.179
retrieving revision 2.179.8.1
diff -C2 -d -r2.179 -r2.179.8.1
*** fileobject.c 18 May 2003 12:56:25 -0000 2.179
--- fileobject.c 4 Sep 2003 19:02:20 -0000 2.179.8.1
***************
*** 283,288 ****
PyFile_SetBufSize(PyObject *f, int bufsize)
{
if (bufsize >= 0) {
- #ifdef HAVE_SETVBUF
int type;
switch (bufsize) {
--- 283,288 ----
PyFile_SetBufSize(PyObject *f, int bufsize)
{
+ PyFileObject *file = (PyFileObject *)f;
if (bufsize >= 0) {
int type;
switch (bufsize) {
***************
*** 290,305 ****
type = _IONBF;
break;
case 1:
type = _IOLBF;
bufsize = BUFSIZ;
break;
default:
type = _IOFBF;
}
! setvbuf(((PyFileObject *)f)->f_fp, (char *)NULL,
! type, bufsize);
#else /* !HAVE_SETVBUF */
! if (bufsize <= 1)
! setbuf(((PyFileObject *)f)->f_fp, (char *)NULL);
#endif /* !HAVE_SETVBUF */
}
--- 290,317 ----
type = _IONBF;
break;
+ #ifdef HAVE_SETVBUF
case 1:
type = _IOLBF;
bufsize = BUFSIZ;
break;
+ #endif
default:
type = _IOFBF;
+ #ifndef HAVE_SETVBUF
+ bufsize = BUFSIZ;
+ #endif
+ break;
}
! fflush(file->f_fp);
! if (type == _IONBF) {
! PyMem_Free(file->f_setbuf);
! file->f_setbuf = NULL;
! } else {
! file->f_setbuf = PyMem_Realloc(file->f_setbuf, bufsize);
! }
! #ifdef HAVE_SETVBUF
! setvbuf(file->f_fp, file->f_setbuf, type, bufsize);
#else /* !HAVE_SETVBUF */
! setbuf(file->f_fp, file->f_setbuf);
#endif /* !HAVE_SETVBUF */
}
***************
*** 376,379 ****
--- 388,392 ----
{
int sts = 0;
+ PyMem_Free(f->f_setbuf);
if (f->f_fp != NULL) {
if (f->f_close != NULL) {
***************
*** 1928,1931 ****
--- 1941,1945 ----
if (open_the_file(foself, name, mode) == NULL)
goto Error;
+ foself->f_setbuf = NULL;
PyFile_SetBufSize(self, bufsize);
goto Done;
More information about the Python-checkins
mailing list