mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
cdhash_cmp: can take rational literals
Rational literals are those integers suffixed with `r`. They tend to be a part of more complex expressions like `123/456r`, but in theory they can live alone. When such "bare" rational literals are passed to case-when branch, we have to take care of them. Fixes [Bug #17854]
This commit is contained in:
parent
773c690f25
commit
2bc293e899
Notes:
git
2021-05-12 10:31:14 +09:00
5 changed files with 26 additions and 3 deletions
13
rational.c
13
rational.c
|
@ -1742,8 +1742,8 @@ nurat_rationalize(int argc, VALUE *argv, VALUE self)
|
|||
}
|
||||
|
||||
/* :nodoc: */
|
||||
static VALUE
|
||||
nurat_hash(VALUE self)
|
||||
st_index_t
|
||||
rb_rational_hash(VALUE self)
|
||||
{
|
||||
st_index_t v, h[2];
|
||||
VALUE n;
|
||||
|
@ -1754,9 +1754,16 @@ nurat_hash(VALUE self)
|
|||
n = rb_hash(dat->den);
|
||||
h[1] = NUM2LONG(n);
|
||||
v = rb_memhash(h, sizeof(h));
|
||||
return ST2FIX(v);
|
||||
return v;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
nurat_hash(VALUE self)
|
||||
{
|
||||
return ST2FIX(rb_rational_hash(self));
|
||||
}
|
||||
|
||||
|
||||
static VALUE
|
||||
f_format(VALUE self, VALUE (*func)(VALUE))
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue