Avoid another valgrind complaint about write() of uninitalized bytes.
Peter Geoghegan, per buildfarm member skink and Andres Freund Discussion: http://postgr.es/m/20180221053426.gp72lw67yfpzkw7a@alap3.anarazel.de
This commit is contained in:
parent
9a5c4f58f3
commit
de6428afe1
@ -739,6 +739,18 @@ LogicalTapeRewindForRead(LogicalTapeSet *lts, int tapenum, size_t buffer_size)
|
|||||||
*/
|
*/
|
||||||
if (lt->dirty)
|
if (lt->dirty)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* As long as we've filled the buffer at least once, its contents
|
||||||
|
* are entirely defined from valgrind's point of view, even though
|
||||||
|
* contents beyond the current end point may be stale. But it's
|
||||||
|
* possible - at least in the case of a parallel sort - to sort
|
||||||
|
* such small amount of data that we do not fill the buffer even
|
||||||
|
* once. Tell valgrind that its contents are defined, so it
|
||||||
|
* doesn't bleat.
|
||||||
|
*/
|
||||||
|
VALGRIND_MAKE_MEM_DEFINED(lt->buffer + lt->nbytes,
|
||||||
|
lt->buffer_size - lt->nbytes);
|
||||||
|
|
||||||
TapeBlockSetNBytes(lt->buffer, lt->nbytes);
|
TapeBlockSetNBytes(lt->buffer, lt->nbytes);
|
||||||
ltsWriteBlock(lts, lt->curBlockNumber, (void *) lt->buffer);
|
ltsWriteBlock(lts, lt->curBlockNumber, (void *) lt->buffer);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user