@@ -506,7 +506,7 @@ static PyObject *
506506fileio_readinto (fileio * self , PyObject * args )
507507{
508508 Py_buffer pbuf ;
509- Py_ssize_t n ;
509+ Py_ssize_t n , len ;
510510
511511 if (self -> fd < 0 )
512512 return err_closed ();
@@ -517,9 +517,16 @@ fileio_readinto(fileio *self, PyObject *args)
517517 return NULL ;
518518
519519 if (_PyVerify_fd (self -> fd )) {
520+ len = pbuf .len ;
520521 Py_BEGIN_ALLOW_THREADS
521522 errno = 0 ;
522- n = read (self -> fd , pbuf .buf , pbuf .len );
523+ #if defined(MS_WIN64 ) || defined(MS_WINDOWS )
524+ if (len > INT_MAX )
525+ len = INT_MAX ;
526+ n = read (self -> fd , pbuf .buf , (int )len );
527+ #else
528+ n = read (self -> fd , pbuf .buf , (size_t )len );
529+ #endif
523530 Py_END_ALLOW_THREADS
524531 } else
525532 n = -1 ;
@@ -685,7 +692,7 @@ static PyObject *
685692fileio_write (fileio * self , PyObject * args )
686693{
687694 Py_buffer pbuf ;
688- Py_ssize_t n ;
695+ Py_ssize_t n , len ;
689696
690697 if (self -> fd < 0 )
691698 return err_closed ();
@@ -698,7 +705,14 @@ fileio_write(fileio *self, PyObject *args)
698705 if (_PyVerify_fd (self -> fd )) {
699706 Py_BEGIN_ALLOW_THREADS
700707 errno = 0 ;
701- n = write (self -> fd , pbuf .buf , pbuf .len );
708+ len = pbuf .len ;
709+ #if defined(MS_WIN64 ) || defined(MS_WINDOWS )
710+ if (len > INT_MAX )
711+ len = INT_MAX ;
712+ n = write (self -> fd , pbuf .buf , (int )len );
713+ #else
714+ n = write (self -> fd , pbuf .buf , (size_t )len );
715+ #endif
702716 Py_END_ALLOW_THREADS
703717 } else
704718 n = -1 ;
0 commit comments