From: Thomas Rast Date: Wed, 28 Jul 2010 16:36:31 +0000 (+0200) Subject: xsize_t: check whether we lose bits X-Git-Tag: v1.7.2.2~1^2 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/46be82dfd0850d7e96b1401a81a396e0cd0e0527?ds=sidebyside xsize_t: check whether we lose bits Attempting to mmap (via git-add or similar) a file larger than 4GB on 32-bit Linux systems results in a repository that has only the file modulo 4GB stored, because of truncation of the off_t file size to a size_t for mmap. When xsize_t was introduced to handle this truncation in dc49cd7 (Cast 64 bit off_t to 32 bit size_t, 2007-03-06), Shawn even pointed out that it should detect when such a cutoff happens. Make it so. Signed-off-by: Thomas Rast Signed-off-by: Junio C Hamano --- diff --git a/git-compat-util.h b/git-compat-util.h index 7534db1267..513d2d7aee 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -260,6 +260,8 @@ static inline ssize_t xwrite(int fd, const void *buf, size_t len) static inline size_t xsize_t(off_t len) { + if (len > (size_t) len) + die("Cannot handle files this big"); return (size_t)len; }