aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2021-12-09 15:54:33 +0100
committerJakub Jelinek <jakub@redhat.com>2021-12-09 15:54:33 +0100
commitbf15cd665e74791aae87e7e151a0cf0c4cb54684 (patch)
tree2c3a6235ddcc95e296b300c1ab48e2f928744f3e
parent747380f47da0da6c11fd5262ac428bb53433ea19 (diff)
downloadgcc-bf15cd665e74791aae87e7e151a0cf0c4cb54684.zip
gcc-bf15cd665e74791aae87e7e151a0cf0c4cb54684.tar.gz
gcc-bf15cd665e74791aae87e7e151a0cf0c4cb54684.tar.bz2
pch: Fix up Darwin and HPUX pch_use_address hooks [PR71934]
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.
-rw-r--r--gcc/config/host-darwin.c4
-rw-r--r--gcc/config/host-hpux.c4
2 files changed, 4 insertions, 4 deletions
diff --git a/gcc/config/host-darwin.c b/gcc/config/host-darwin.c
index d3c2858..403cd38 100644
--- a/gcc/config/host-darwin.c
+++ b/gcc/config/host-darwin.c
@@ -185,10 +185,10 @@ darwin_gt_pch_use_address (void *&addr, size_t sz, int fd, size_t off)
{
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;
}
diff --git a/gcc/config/host-hpux.c b/gcc/config/host-hpux.c
index 796f501..c63dda8 100644
--- a/gcc/config/host-hpux.c
+++ b/gcc/config/host-hpux.c
@@ -115,10 +115,10 @@ hpux_gt_pch_use_address (void *&base, size_t size, int fd, size_t offset)
{
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;
}