mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
The device numbers in struct statx
may be larger than dev_t
`dev_t` is already 64-bit in glibc, but on some platforms like Alpine Linux and Android NDK, `makedev` is defined as more than 32-bit ( promoting to `unsigned long long` then left-shifting by 32bit), while `dev_t` is still 32-bit.
This commit is contained in:
parent
071aa02a4a
commit
c7f5ae981a
Notes:
git
2025-06-13 10:36:05 +00:00
1 changed files with 2 additions and 2 deletions
4
file.c
4
file.c
|
@ -662,7 +662,7 @@ rb_stat_dev(VALUE self)
|
|||
#if RUBY_USE_STATX
|
||||
unsigned int m = get_stat(self)->stx_dev_major;
|
||||
unsigned int n = get_stat(self)->stx_dev_minor;
|
||||
return DEVT2NUM(makedev(m, n));
|
||||
return ULL2NUM(makedev(m, n));
|
||||
#elif SIZEOF_STRUCT_STAT_ST_DEV <= SIZEOF_DEV_T
|
||||
return DEVT2NUM(get_stat(self)->st_dev);
|
||||
#elif SIZEOF_STRUCT_STAT_ST_DEV <= SIZEOF_LONG
|
||||
|
@ -833,7 +833,7 @@ rb_stat_rdev(VALUE self)
|
|||
#if RUBY_USE_STATX
|
||||
unsigned int m = get_stat(self)->stx_rdev_major;
|
||||
unsigned int n = get_stat(self)->stx_rdev_minor;
|
||||
return DEVT2NUM(makedev(m, n));
|
||||
return ULL2NUM(makedev(m, n));
|
||||
#elif !defined(HAVE_STRUCT_STAT_ST_RDEV)
|
||||
return Qnil;
|
||||
#elif SIZEOF_STRUCT_STAT_ST_RDEV <= SIZEOF_DEV_T
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue