@@ -177,6 +177,11 @@ _PyGC_Init(PyInterpreterState *interp)
177177{
178178GCState*gcstate=&interp->gc;
179179180+gcstate->generation_stats=PyMem_RawCalloc(1, sizeof(structgc_stats));
181+if (gcstate->generation_stats==NULL) {
182+return_PyStatus_NO_MEMORY();
183+ }
184+180185gcstate->garbage=PyList_New(0);
181186if (gcstate->garbage==NULL) {
182187return_PyStatus_NO_MEMORY();
@@ -1398,13 +1403,13 @@ static struct gc_generation_stats *
13981403gc_get_stats(GCState*gcstate, intgen)
13991404{
14001405if (gen==0) {
1401-structgc_young_stats_buffer*buffer=&gcstate->generation_stats.young;
1406+structgc_young_stats_buffer*buffer=&gcstate->generation_stats->young;
14021407buffer->index= (buffer->index+1) % GC_YOUNG_STATS_SIZE;
14031408structgc_generation_stats*stats=&buffer->items[buffer->index];
14041409returnstats;
14051410 }
14061411else {
1407-structgc_old_stats_buffer*buffer=&gcstate->generation_stats.old[gen-1];
1412+structgc_old_stats_buffer*buffer=&gcstate->generation_stats->old[gen-1];
14081413buffer->index= (buffer->index+1) % GC_OLD_STATS_SIZE;
14091414structgc_generation_stats*stats=&buffer->items[buffer->index];
14101415returnstats;
@@ -1415,12 +1420,12 @@ static struct gc_generation_stats *
14151420gc_get_prev_stats(GCState*gcstate, intgen)
14161421{
14171422if (gen==0) {
1418-structgc_young_stats_buffer*buffer=&gcstate->generation_stats.young;
1423+structgc_young_stats_buffer*buffer=&gcstate->generation_stats->young;
14191424structgc_generation_stats*stats=&buffer->items[buffer->index];
14201425returnstats;
14211426 }
14221427else {
1423-structgc_old_stats_buffer*buffer=&gcstate->generation_stats.old[gen-1];
1428+structgc_old_stats_buffer*buffer=&gcstate->generation_stats->old[gen-1];
14241429structgc_generation_stats*stats=&buffer->items[buffer->index];
14251430returnstats;
14261431 }
@@ -2299,6 +2304,8 @@ _PyGC_Fini(PyInterpreterState *interp)
22992304GCState*gcstate=&interp->gc;
23002305Py_CLEAR(gcstate->garbage);
23012306Py_CLEAR(gcstate->callbacks);
2307+PyMem_RawFree(gcstate->generation_stats);
2308+gcstate->generation_stats=NULL;
2302230923032310/* Prevent a subtle bug that affects sub-interpreters that use basic
23042311 * single-phase init extensions (m_size == -1). Those extensions cause objects