Fix failure when a shared tidbitmap has only one page.
Commit 98e6e89040a0534ca26914c66cae9dd49ef62ad9 made inadequate provision for the case of a single-page shared tidbitmap. It allocate space for a shared PagetableEntry, but failed to initialize it. Report by Thomas Munro. Patch by Dilip Kumar, with some comment changes by me. Discussion: http://postgr.es/m/CAEepm=19Cmnfbi-j2Bw-a6yGPeHE1OVhKvvKz9bRBTJGKfGHMA@mail.gmail.com
This commit is contained in:
parent
28b0478755
commit
4c3b59abf4
@ -866,12 +866,14 @@ tbm_prepare_shared_iterate(TIDBitmap *tbm)
|
||||
else if (tbm->status == TBM_ONE_PAGE)
|
||||
{
|
||||
/*
|
||||
* In one page mode allocate the space for one pagetable entry and
|
||||
* directly store its index i.e. 0 in page array
|
||||
* In one page mode allocate the space for one pagetable entry,
|
||||
* initialize it, and directly store its index (i.e. 0) in the
|
||||
* page array.
|
||||
*/
|
||||
tbm->dsapagetable = dsa_allocate(tbm->dsa, sizeof(PTEntryArray) +
|
||||
sizeof(PagetableEntry));
|
||||
ptbase = dsa_get_address(tbm->dsa, tbm->dsapagetable);
|
||||
memcpy(ptbase->ptentry, &tbm->entry1, sizeof(PagetableEntry));
|
||||
ptpages->index[0] = 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user