diff src/dired.c @ 5727:86d33ddc7fd6

Avoid EOVERFLOW from stat() calls due to overflowing inode numbers. The btrfs filesystem now uses 64-bit inode numbers even on 32-bit systems. This can lead to spurious stat() failures, where EOVERFLOW is returned because the inode number does not fit into the 32-bit stat structure, even when the caller is not interested in the inode number. This patch builds with _FILE_OFFSET_BITS == 64 when possible, and deals with integers that may be too large to fit into a Lisp fixnum. For more information, see xemacs-patches message <CAHCOHQk_mPM6WgFChBsGafqhuazep6VED7swFoqfFXOV1r8org@mail.gmail.com>.
author Jerry James <james@xemacs.org>
date Wed, 06 Mar 2013 08:32:17 -0700
parents 56144c8593a8
children c30fdcab7bc8
line wrap: on
line diff
--- a/src/dired.c	Tue Mar 05 08:55:56 2013 +0100
+++ b/src/dired.c	Wed Mar 06 08:32:17 2013 -0700
@@ -927,17 +927,17 @@
 
   RETURN_UNGCPRO (listn (12,
 			 mode,
-			 make_fixnum (s.st_nlink),
-			 make_fixnum (s.st_uid),
-			 make_fixnum (s.st_gid),
+			 make_integer (s.st_nlink),
+			 make_integer (s.st_uid),
+			 make_integer (s.st_gid),
 			 make_time (s.st_atime),
 			 make_time (s.st_mtime),
 			 make_time (s.st_ctime),
 			 size,
 			 modestring,
 			 gid,
-			 make_fixnum (s.st_ino),
-			 make_fixnum (s.st_dev)));
+			 make_integer (s.st_ino),
+			 make_integer (s.st_dev)));
 }