From 070292f3118b75de9fc0e79fac6ca0186d157c28 Mon Sep 17 00:00:00 2001 From: Sergey Bugaev Date: Tue, 9 May 2023 00:31:04 +0300 Subject: libstore: Port to x86_64 Message-Id: <20230508213136.608575-10-bugaevc@gmail.com> --- libstore/copy.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'libstore/copy.c') diff --git a/libstore/copy.c b/libstore/copy.c index c670ebf3..16b99390 100644 --- a/libstore/copy.c +++ b/libstore/copy.c @@ -36,10 +36,18 @@ copy_read (struct store *store, store_offset_t addr, size_t index, char *data = store->hook + (addr * store->block_size); if (page_aligned (data) && page_aligned (amount)) - /* When reading whole pages, we can avoid any real copying. */ - return vm_read (mach_task_self (), - (vm_address_t) data, amount, - (pointer_t *) buf, len); + { + /* When reading whole pages, we can avoid any real copying. */ + error_t err; + mach_msg_type_number_t nread; + err = vm_read (mach_task_self (), + (vm_address_t) data, amount, + (pointer_t *) buf, &nread); + if (err) + return err; + *len = nread; + return 0; + } if (*len < amount) /* Have to allocate memory for the return value. */ -- cgit v1.2.3