diff --git a/src/backend/access/index/indexam.c b/src/backend/access/index/indexam.c
index aefdd2916d..cc43300072 100644
--- a/src/backend/access/index/indexam.c
+++ b/src/backend/access/index/indexam.c
@@ -480,8 +480,7 @@ index_beginscan_parallel(Relation heaprel, Relation indexrel, int nkeys,
 	IndexScanDesc scan;
 
 	Assert(RelationGetRelid(heaprel) == pscan->ps_relid);
-	snapshot = RestoreSnapshot(pscan->ps_snapshot_data);
-	RegisterSnapshot(snapshot);
+	snapshot = RegisterSnapshot(RestoreSnapshot(pscan->ps_snapshot_data));
 	scan = index_beginscan_internal(indexrel, nkeys, norderbys, snapshot,
 									pscan, true);
 
diff --git a/src/backend/access/table/tableam.c b/src/backend/access/table/tableam.c
index 12adf59085..c4b0e221da 100644
--- a/src/backend/access/table/tableam.c
+++ b/src/backend/access/table/tableam.c
@@ -107,8 +107,7 @@ table_scan_update_snapshot(TableScanDesc scan, Snapshot snapshot)
 {
 	Assert(IsMVCCSnapshot(snapshot));
 
-	RegisterSnapshot(snapshot);
-	scan->rs_snapshot = snapshot;
+	scan->rs_snapshot = RegisterSnapshot(snapshot);
 	scan->rs_flags |= SO_TEMP_SNAPSHOT;
 }
 
@@ -167,7 +166,7 @@ table_beginscan_parallel(Relation relation, ParallelTableScanDesc parallel_scan)
 		/* Snapshot was serialized -- restore it */
 		snapshot = RestoreSnapshot((char *) parallel_scan +
 								   parallel_scan->phs_snapshot_off);
-		RegisterSnapshot(snapshot);
+		snapshot = RegisterSnapshot(snapshot);
 		flags |= SO_TEMP_SNAPSHOT;
 	}
 	else
