(process_file): Don't overflow for files of size >= 2^31
authorJim Meyering <jim@meyering.net>
Fri, 4 Nov 2005 10:08:51 +0000 (10:08 +0000)
committerJim Meyering <jim@meyering.net>
Fri, 4 Nov 2005 10:08:51 +0000 (10:08 +0000)
on systems with stat.st_blocks of a signed 32-bit type.
This bug causes trouble on some AIX 5.1 systems.
Report and trivial patch from Paul Townsend:
<http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00033.html>

src/du.c

index 12c21aa..361f676 100644 (file)
--- a/src/du.c
+++ b/src/du.c
@@ -537,7 +537,7 @@ process_file (FTS *fts, FTSENT *ent)
       duinfo_set (&dui,
                  (apparent_size
                   ? sb->st_size
-                  : ST_NBLOCKS (*sb) * ST_NBLOCKSIZE),
+                  : (uintmax_t) ST_NBLOCKS (*sb) * ST_NBLOCKSIZE),
                  (time_type == time_mtime ? get_stat_mtime (sb)
                   : time_type == time_atime ? get_stat_atime (sb)
                   : get_stat_ctime (sb)));