File tree Expand file tree Collapse file tree 1 file changed +9
-2
lines changed Expand file tree Collapse file tree 1 file changed +9
-2
lines changed Original file line number Diff line number Diff line change @@ -1309,7 +1309,7 @@ _PyCrossInterpreterData_Release(_PyCrossInterpreterData *data)
1309
1309
return ;
1310
1310
}
1311
1311
1312
- // Switch to the original interpreter.
1312
+ // Get the original interpreter.
1313
1313
PyInterpreterState * interp = _PyInterpreterState_LookUpID (data -> interp );
1314
1314
if (interp == NULL ) {
1315
1315
// The intepreter was already destroyed.
@@ -1318,9 +1318,16 @@ _PyCrossInterpreterData_Release(_PyCrossInterpreterData *data)
1318
1318
}
1319
1319
return ;
1320
1320
}
1321
+ // XXX There's a slight race here...
1322
+ if (interp -> finalizing ) {
1323
+ // XXX Someone leaked some memory...
1324
+ return ;
1325
+ }
1321
1326
1322
1327
// "Release" the data and/or the object.
1323
- _Py_AddPendingCall (interp , 0 , _release_xidata , data );
1328
+ if (_Py_AddPendingCall (interp , 0 , _release_xidata , data ) != 0 ) {
1329
+ // XXX Queue full or couldn't get lock. Try again somehow?
1330
+ }
1324
1331
}
1325
1332
1326
1333
PyObject *
You can’t perform that action at this time.
0 commit comments