From 7e04df4e0b8e568aafeca22e4248dee4202463f0 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 11 Aug 2005 14:29:46 +0000 Subject: * ext/stringio/stringio.c: keep holding string after closed. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@8968 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/stringio/stringio.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'ext/stringio/stringio.c') diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index 776e5231b7..e261674551 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -384,10 +384,9 @@ strio_close(self) VALUE self; { struct StringIO *ptr = StringIO(self); - if (CLOSED(ptr)) { + if (CLOSED(ptr) || !(ptr->flags & FMODE_READWRITE)) { rb_raise(rb_eIOError, "closed stream"); } - ptr->string = Qnil; ptr->flags &= ~FMODE_READWRITE; return Qnil; } @@ -407,9 +406,7 @@ strio_close_read(self) if (!READABLE(ptr)) { rb_raise(rb_eIOError, "closing non-duplex IO for reading"); } - if (!((ptr->flags &= ~FMODE_READABLE) & FMODE_READWRITE)) { - ptr->string = Qnil; - } + ptr->flags &= ~FMODE_READABLE; return Qnil; } @@ -428,9 +425,7 @@ strio_close_write(self) if (!WRITABLE(ptr)) { rb_raise(rb_eIOError, "closing non-duplex IO for writing"); } - if (!((ptr->flags &= ~FMODE_WRITABLE) & FMODE_READWRITE)) { - ptr->string = Qnil; - } + ptr->flags &= ~FMODE_WRITABLE; return Qnil; } -- cgit v1.2.3