In the last change, I've changed the arguments from void * to void *&,
but missed the fact that these hooks will in that case update the value
the caller will see in an undesirable way.
2021-12-09 Jakub Jelinek <jakub@redhat.com>
PR pch/71934
* config/host-darwin.c (darwin_gt_pch_use_address): When reading
manually the file into mapped area, update mapped_addr as
an automatic variable rather than addr which is a reference parameter.
* config/host-hpux.c (hpux_gt_pch_use_address): When reading
manually the file into mapped area, update addr as
an automatic variable rather than base which is a reference parameter.
{
ssize_t nbytes;
- nbytes = read (fd, addr, MIN (sz, (size_t) -1 >> 1));
+ nbytes = read (fd, mapped_addr, MIN (sz, (size_t) -1 >> 1));
if (nbytes <= 0)
return -1;
- addr = (char *) addr + nbytes;
+ mapped_addr = (char *) mapped_addr + nbytes;
sz -= nbytes;
}
{
ssize_t nbytes;
- nbytes = read (fd, base, MIN (size, SSIZE_MAX));
+ nbytes = read (fd, addr, MIN (size, SSIZE_MAX));
if (nbytes <= 0)
return -1;
- base = (char *) base + nbytes;
+ addr = (char *) addr + nbytes;
size -= nbytes;
}