diff options
author | Nobuyoshi Nakada <[email protected]> | 2019-07-10 03:02:01 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <[email protected]> | 2019-07-10 03:02:01 +0900 |
commit | cc936402eb60fc0ccdafd47dc1e4f6f8ae0c4b9c (patch) | |
tree | 65d796df37df0f743ee8ef384f31cd03ff507e1a | |
parent | de4889ce5c5177ed276dfc840a5c07f69317096c (diff) |
C90 for old versions
-rw-r--r-- | ext/stringio/stringio.c | 25 |
1 files changed, 11 insertions, 14 deletions
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; } |