mirror of
https://github.com/ruby/ruby.git
synced 2026-01-27 04:24:23 +00: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
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…
x
Reference in New Issue
Block a user