From e28e19cbba0ba34df95914f0a656b07b28785ab5 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Thu, 15 Apr 2004 10:37:59 +0000 Subject: Include getpagesize.h. (copy_reg): Align I/O buffers to page boundaries. --- src/copy.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/copy.c') diff --git a/src/copy.c b/src/copy.c index 66ffbf85d..7f52766d1 100644 --- a/src/copy.c +++ b/src/copy.c @@ -33,6 +33,7 @@ #include "dirname.h" #include "error.h" #include "full-write.h" +#include "getpagesize.h" #include "hash.h" #include "hash-pjw.h" #include "path-concat.h" @@ -205,7 +206,8 @@ copy_reg (const char *src_path, const char *dst_path, struct stat const *src_sb) { char *buf; - int buf_size; + size_t buf_size; + size_t buf_alignment; int dest_desc; int source_desc; struct stat sb; @@ -316,7 +318,9 @@ copy_reg (const char *src_path, const char *dst_path, /* Make a buffer with space for a sentinel at the end. */ - buf = alloca (buf_size + sizeof (int)); + buf_alignment = lcm (getpagesize (), sizeof (int)); + buf = alloca (buf_size + sizeof (int) + buf_alignment - 1); + buf = ptr_align (buf, buf_alignment); for (;;) { -- cgit v1.2.3-54-g00ecf