Bug #10453 ยป num2chr-range-check-10453.patch
include/ruby/ruby.h | ||
---|---|---|
}
|
||
#define RB_ULONG2NUM(x) rb_ulong2num_inline(x)
|
||
static inline char
|
||
rb_num2char_inline(VALUE x)
|
||
{
|
||
if (RB_TYPE_P(x, RUBY_T_STRING) && (RSTRING_LEN(x)>=1))
|
||
return RSTRING_PTR(x)[0];
|
||
else
|
||
return (char)(NUM2INT(x) & 0xff);
|
||
}
|
||
#define RB_NUM2CHR(x) rb_num2char_inline(x)
|
||
#define RB_CHR2FIX(x) RB_INT2FIX((long)((x)&0xff))
|
||
... | ... | |
RUBY_EXTERN VALUE rb_stdin, rb_stdout, rb_stderr;
|
||
static inline char
|
||
rb_num2char_inline(VALUE x)
|
||
{
|
||
if (RB_TYPE_P(x, RUBY_T_STRING) && (RSTRING_LEN(x)>=1))
|
||
return RSTRING_PTR(x)[0];
|
||
else {
|
||
unsigned int y = NUM2UINT(x);
|
||
if (y > 0xff)
|
||
rb_raise(rb_eRangeError, "value to large to convert to char: %u", y);
|
||
return (char)(y & 0xff);
|
||
}
|
||
}
|
||
static inline VALUE
|
||
rb_class_of(VALUE obj)
|
||
{
|