mirror of
https://github.com/postgres/postgres.git
synced 2025-05-08 07:21:33 +03:00
Improve assertion in mdwritev()
The assertion used at the beginning of mdwritev(), that is not enabled except by defining -DCHECK_WRITE_VS_EXTEND as mdnblocks() is costly, forgot about the total number of blocks to write at location specified by the caller. The calculation is fixed to count for that, and uses casts to uint64 to ensure a proper check should the number of blocks overflow. Using a cast is a suggestion from Tom Lane. Oversight in 4908c5872059. Author: Xing Guo Discussion: https://postgr.es/m/CACpMh+BM-VgKeO7suPG-VHTtpzJ+zsbDPwVHu42PLp-iTk0z+A@mail.gmail.com
This commit is contained in:
parent
4ebe51a5fb
commit
f04d1c1db0
@ -930,7 +930,7 @@ mdwritev(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
|
|||||||
{
|
{
|
||||||
/* This assert is too expensive to have on normally ... */
|
/* This assert is too expensive to have on normally ... */
|
||||||
#ifdef CHECK_WRITE_VS_EXTEND
|
#ifdef CHECK_WRITE_VS_EXTEND
|
||||||
Assert(blocknum < mdnblocks(reln, forknum));
|
Assert((uint64) blocknum + (uint64) nblocks <= (uint64) mdnblocks(reln, forknum));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
while (nblocks > 0)
|
while (nblocks > 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user