This is an automated email from the ASF dual-hosted git repository.

yjhjstz pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry.git

commit 0bb07c03c65141aa25b7db8ae0799afd0a285416
Author: Soumyadeep Chakraborty <[email protected]>
AuthorDate: Wed Aug 24 09:23:50 2022 -0700

    DatumStreamRead teardown: NULL out after pfree
---
 src/backend/access/aocs/aocsam.c                 | 3 +++
 src/backend/utils/datumstream/datumstream.c      | 6 ++++++
 src/backend/utils/datumstream/datumstreamblock.c | 3 ++-
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/backend/access/aocs/aocsam.c b/src/backend/access/aocs/aocsam.c
index 482d4c2562..1f115295fb 100644
--- a/src/backend/access/aocs/aocsam.c
+++ b/src/backend/access/aocs/aocsam.c
@@ -639,6 +639,7 @@ aocs_endscan(AOCSScanDesc scan)
 
                close_ds_read(scan->columnScanInfo.ds, 
scan->columnScanInfo.relationTupleDesc->natts);
                pfree(scan->columnScanInfo.ds);
+               scan->columnScanInfo.ds = NULL;
        }
 
        if (scan->columnScanInfo.relationTupleDesc)
@@ -1818,7 +1819,9 @@ aocs_fetch_finish(AOCSFetchDesc aocsFetchDesc)
                        Assert(datumStreamFetchDesc->datumStream != NULL);
                        
datumstreamread_close_file(datumStreamFetchDesc->datumStream);
                        
destroy_datumstreamread(datumStreamFetchDesc->datumStream);
+                       datumStreamFetchDesc->datumStream = NULL;
                        pfree(datumStreamFetchDesc);
+                       aocsFetchDesc->datumStreamFetchDesc[colno] = NULL;
                }
        }
        pfree(aocsFetchDesc->datumStreamFetchDesc);
diff --git a/src/backend/utils/datumstream/datumstream.c 
b/src/backend/utils/datumstream/datumstream.c
index 24b387f286..9c878db69f 100644
--- a/src/backend/utils/datumstream/datumstream.c
+++ b/src/backend/utils/datumstream/datumstream.c
@@ -787,9 +787,15 @@ destroy_datumstreamread(DatumStreamRead * ds)
        DatumStreamBlockRead_Finish(&ds->blockRead);
 
        if (ds->large_object_buffer)
+       {
                pfree(ds->large_object_buffer);
+               ds->large_object_buffer = NULL;
+       }
        if (ds->datum_upgrade_buffer)
+       {
                pfree(ds->datum_upgrade_buffer);
+               ds->datum_upgrade_buffer = NULL;
+       }
 
        AppendOnlyStorageRead_FinishSession(&ds->ao_read);
 
diff --git a/src/backend/utils/datumstream/datumstreamblock.c 
b/src/backend/utils/datumstream/datumstreamblock.c
index 76783e28fd..7c65b1090d 100755
--- a/src/backend/utils/datumstream/datumstreamblock.c
+++ b/src/backend/utils/datumstream/datumstreamblock.c
@@ -4492,7 +4492,8 @@ DatumStreamBlockWrite_Finish(
                dsw->null_bitmap_buffer = NULL;
        }
 
-       if (dsw->datum_buffer != NULL) {
+       if (dsw->datum_buffer != NULL)
+       {
                pfree(dsw->datum_buffer);
                dsw->datum_buffer = NULL;
        }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to