1
0
mirror of https://github.com/postgres/postgres.git synced 2025-08-18 12:22:09 +03:00

Change the PageGetContents() macro to guarantee its result is maxalign'd,

thereby forestalling any problems with alignment of the data structure placed
there.  Since SizeOfPageHeaderData is maxalign'd anyway in 8.3 and HEAD, this
does not actually change anything right now, but it is foreseeable that the
header size will change again someday.  I had to fix a couple of places that
were assuming that the content offset is just SizeOfPageHeaderData rather than
MAXALIGN(SizeOfPageHeaderData).  Per discussion of Zdenek's page-macros patch.
This commit is contained in:
Tom Lane
2008-07-13 21:50:04 +00:00
parent 9d035f4254
commit 6816577a78
3 changed files with 21 additions and 18 deletions

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/storage/page/bufpage.c,v 1.79 2008/05/13 15:44:08 momjian Exp $
* $PostgreSQL: pgsql/src/backend/storage/page/bufpage.c,v 1.80 2008/07/13 21:50:04 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -260,7 +260,6 @@ Page
PageGetTempPage(Page page, Size specialSize)
{
Size pageSize;
Size size;
Page temp;
PageHeader thdr;
@@ -271,15 +270,13 @@ PageGetTempPage(Page page, Size specialSize)
/* copy old page in */
memcpy(temp, page, pageSize);
/* clear out the middle */
size = pageSize - SizeOfPageHeaderData;
size -= MAXALIGN(specialSize);
MemSet(PageGetContents(thdr), 0, size);
/* set high, low water marks */
thdr->pd_lower = SizeOfPageHeaderData;
thdr->pd_upper = pageSize - MAXALIGN(specialSize);
/* clear out the middle */
MemSet((char *) temp + thdr->pd_lower, 0, thdr->pd_upper - thdr->pd_lower);
return temp;
}