@@ -897,6 +897,7 @@ _overlapped_Overlapped_getresult_impl(OverlappedObject *self, BOOL wait)
897897 BOOL ret ;
898898 DWORD err ;
899899 PyObject * addr ;
900+ PyObject * transferred_obj ;
900901
901902 if (self -> type == TYPE_NONE ) {
902903 PyErr_SetString (PyExc_ValueError , "operation not yet attempted" );
@@ -965,8 +966,6 @@ _overlapped_Overlapped_getresult_impl(OverlappedObject *self, BOOL wait)
965966 }
966967
967968 // The result is a two item tuple: (message, address)
968- // first item: message
969- // second item: address
970969 self -> read_from .result = _PyTuple_FromPairSteal (
971970 Py_NewRef (self -> read_from .allocated_buffer ), addr );
972971 if (self -> read_from .result == NULL ) {
@@ -983,11 +982,15 @@ _overlapped_Overlapped_getresult_impl(OverlappedObject *self, BOOL wait)
983982 return NULL ;
984983 }
985984
985+ transferred_obj = PyLong_FromUnsignedLong ((unsigned long )transferred );
986+ if (transferred_obj == NULL ) {
987+ Py_DECREF (addr );
988+ return NULL ;
989+ }
990+
986991 // The result is a two item tuple: (number of bytes read, address)
987- // first item: number of bytes read
988- // second item: address
989992 self -> read_from_into .result = _PyTuple_FromPairSteal (
990- PyLong_FromUnsignedLong (( unsigned long ) transferred ) , addr );
993+ transferred_obj , addr );
991994 if (self -> read_from_into .result == NULL ) {
992995 return NULL ;
993996 }
0 commit comments