Robustify tuplesort's free_sort_tuple function
authorDavid Rowley <[email protected]>
Tue, 13 Jul 2021 01:32:10 +0000 (13:32 +1200)
committerDavid Rowley <[email protected]>
Tue, 13 Jul 2021 01:32:10 +0000 (13:32 +1200)
41469253e went to the trouble of removing a theoretical bug from
free_sort_tuple by checking if the tuple was NULL before freeing it. Let's
make this a little more robust by also setting the tuple to NULL so that
should we be called again we won't end up doing a pfree on the already
pfree'd tuple. Per advice from Tom Lane.

Discussion: https://postgr.es/m/3188192.1626136953@sss.pgh.pa.us
Backpatch-through: 9.6, same as 41469253e

src/backend/utils/sort/tuplesort.c

index 015c197a77f661dbc973de639ec0089d187c9e44..d1c29b2f04366b4a5aa1b611bfb7da76fc4b5176 100644 (file)
@@ -4775,6 +4775,7 @@ writetup_datum(Tuplesortstate *state, int tapenum, SortTuple *stup)
    {
        FREEMEM(state, GetMemoryChunkSpace(stup->tuple));
        pfree(stup->tuple);
+       stup->tuple = NULL;
    }
 }