From cc936402eb60fc0ccdafd47dc1e4f6f8ae0c4b9c Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 10 Jul 2019 03:02:01 +0900 Subject: C90 for old versions --- ext/stringio/stringio.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'ext') diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index 4c135ef8c2..bfe1700c5a 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -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; } -- cgit v1.2.3