diff options
author | Eli Zaretskii <[email protected]> | 2008-05-03 10:11:22 +0000 |
---|---|---|
committer | Eli Zaretskii <[email protected]> | 2008-05-03 10:11:22 +0000 |
commit | 064032d03080c9f64ce5196a6f2664acdbeb95e4 (patch) | |
tree | 74d779d6379096f3e581c9493381f8604da401d9 | |
parent | 50eff40ff15b6349137bc9618d021495c72815af (diff) |
(Ffile_attributes): Don't allow the device number become negative.
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/dired.c | 7 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 0849e9ee4b..8efef81455 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2008-05-03 Eli Zaretskii <[email protected]> + + * dired.c (Ffile_attributes): Don't allow the device number become + negative. + 2008-05-02 YAMAMOTO Mitsuharu <[email protected]> * config.in: Regenerate. diff --git a/src/dired.c b/src/dired.c index 31b7e19dda..7936e04a54 100644 --- a/src/dired.c +++ b/src/dired.c @@ -1048,8 +1048,11 @@ Elements of the attribute list are: /* But keep the most common cases as integers. */ values[10] = make_number (ino); - /* Likewise for device. */ - if (FIXNUM_OVERFLOW_P (s.st_dev)) + /* Likewise for device, but don't let it become negative. We used + to use FIXNUM_OVERFLOW_P here, but that won't catch large + positive numbers such as 0xFFEEDDCC. */ + if ((EMACS_INT)s.st_dev < 0 + || (EMACS_INT)s.st_dev > MOST_POSITIVE_FIXNUM) values[11] = Fcons (make_number (s.st_dev >> 16), make_number (s.st_dev & 0xffff)); else |