diff --git a/src/fs_inode.hpp b/src/fs_inode.hpp index 683a83f00..64ac41055 100644 --- a/src/fs_inode.hpp +++ b/src/fs_inode.hpp @@ -34,12 +34,16 @@ namespace fs void recompute(struct stat &st) { - /* - Some OSes have 32-bit device IDs, so box this up first. - This does also presume a 64-bit inode value. - */ - uint64_t st_dev = (uint64_t)st.st_dev; - st.st_ino |= (st_dev << 32); + switch(sizeof(st.st_ino)) + { + case 4: + st.st_ino |= ((uint32_t)st.st_dev << 16); + break; + case 8: + default: + st.st_ino |= ((uint64_t)st.st_dev << 32); + break; + } } } }