@@ -1265,52 +1265,49 @@ static PyObject *
12651265FutureObj_get_callbacks (FutureObj  * fut , void  * Py_UNUSED (ignored ))
12661266{
12671267    asyncio_state  * state  =  get_asyncio_state_by_def ((PyObject  * )fut );
1268-     Py_ssize_t  i ;
1269- 
12701268    ENSURE_FUTURE_ALIVE (state , fut )
12711269
1272-     if  (fut -> fut_callback0  ==  NULL ) {
1273-         if  (fut -> fut_callbacks  ==  NULL ) {
1274-             Py_RETURN_NONE ;
1275-         }
1276- 
1277-         return  Py_NewRef (fut -> fut_callbacks );
1270+     if  (fut -> fut_callback0  ==  NULL  &&  fut -> fut_callbacks  ==  NULL ) {
1271+         Py_RETURN_NONE ;
12781272    }
12791273
1280-     Py_ssize_t  len  =  1 ;
1274+     Py_ssize_t  len  =  0 ;
1275+     if  (fut -> fut_callback0  !=  NULL ) {
1276+         len ++ ;
1277+     }
12811278    if  (fut -> fut_callbacks  !=  NULL ) {
12821279        len  +=  PyList_GET_SIZE (fut -> fut_callbacks );
12831280    }
12841281
1285- 
1286-     PyObject  * new_list  =  PyList_New (len );
1287-     if  (new_list  ==  NULL ) {
1282+     PyObject  * callbacks  =  PyList_New (len );
1283+     if  (callbacks  ==  NULL ) {
12881284        return  NULL ;
12891285    }
12901286
1291-     PyObject  * tup0  =  PyTuple_New (2 );
1292-     if  (tup0  ==  NULL ) {
1293-         Py_DECREF (new_list );
1294-         return  NULL ;
1287+     Py_ssize_t  i  =  0 ;
1288+     if  (fut -> fut_callback0  !=  NULL ) {
1289+         PyObject  * tup0  =  PyTuple_New (2 );
1290+         if  (tup0  ==  NULL ) {
1291+             Py_DECREF (callbacks );
1292+             return  NULL ;
1293+         }
1294+         PyTuple_SET_ITEM (tup0 , 0 , Py_NewRef (fut -> fut_callback0 ));
1295+         assert (fut -> fut_context0  !=  NULL );
1296+         PyTuple_SET_ITEM (tup0 , 1 , Py_NewRef (fut -> fut_context0 ));
1297+         PyList_SET_ITEM (callbacks , i , tup0 );
1298+         i ++ ;
12951299    }
12961300
1297-     Py_INCREF (fut -> fut_callback0 );
1298-     PyTuple_SET_ITEM (tup0 , 0 , fut -> fut_callback0 );
1299-     assert (fut -> fut_context0  !=  NULL );
1300-     Py_INCREF (fut -> fut_context0 );
1301-     PyTuple_SET_ITEM (tup0 , 1 , (PyObject  * )fut -> fut_context0 );
1302- 
1303-     PyList_SET_ITEM (new_list , 0 , tup0 );
1304- 
13051301    if  (fut -> fut_callbacks  !=  NULL ) {
1306-         for  (i   =  0 ; i  <  PyList_GET_SIZE (fut -> fut_callbacks ); i ++ ) {
1307-             PyObject  * cb  =  PyList_GET_ITEM (fut -> fut_callbacks , i );
1302+         for  (int   j   =  0 ; i  <  PyList_GET_SIZE (fut -> fut_callbacks ); j ++ ) {
1303+             PyObject  * cb  =  PyList_GET_ITEM (fut -> fut_callbacks , j );
13081304            Py_INCREF (cb );
1309-             PyList_SET_ITEM (new_list , i  +  1 , cb );
1305+             PyList_SET_ITEM (callbacks , i , cb );
1306+             i ++ ;
13101307        }
13111308    }
13121309
1313-     return  new_list ;
1310+     return  callbacks ;
13141311}
13151312
13161313static  PyObject  * 
0 commit comments