This commit is contained in:
Nobuyoshi Nakada 2019-07-10 03:02:01 +09:00
Родитель de4889ce5c
Коммит cc936402eb
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4BC7D6DF58D8DF60
1 изменённых файлов: 11 добавлений и 14 удалений

Просмотреть файл

@ -807,25 +807,22 @@ strio_ungetbyte(VALUE self, VALUE c)
struct StringIO *ptr = readable(self);
check_modifiable(ptr);
switch (TYPE(c)) {
case T_NIL:
return Qnil;
case T_FIXNUM:
case T_BIGNUM: ;
if (NIL_P(c)) return Qnil;
if (RB_INTEGER_TYPE_P(c)) {
/* rb_int_and() not visible from exts */
VALUE v = rb_funcall(c, '&', 1, INT2FIX(0xff));
const char cc = NUM2INT(v) & 0xFF;
strio_unget_bytes(ptr, &cc, 1);
return Qnil;
default:
SafeStringValue(c);
}
const char *cp = RSTRING_PTR(c);
long cl = RSTRING_LEN(c);
if (cl == 0) return Qnil;
strio_unget_bytes(ptr, cp, cl);
RB_GC_GUARD(c);
else {
long cl;
SafeStringValue(c);
cl = RSTRING_LEN(c);
if (cl > 0) {
strio_unget_bytes(ptr, RSTRING_PTR(c), cl);
RB_GC_GUARD(c);
}
}
return Qnil;
}