diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-08-13 09:36:12 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-08-13 09:36:12 +0000 |
commit | 41349a40648569ce9890b72929e9a1cc1d439c5b (patch) | |
tree | 6fdba2ba34b8ed70d9a91f139ccc84ae88fe7886 /ext/stringio/stringio.c | |
parent | 81cc5f0cd8edec0a8c92092d2dbae2a50f108078 (diff) |
* ext/stringio/stringio.c (strio_set_string): disallow nil.
http://www.rubyist.net/~nobu/t/20050811.html#c05
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@8980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/stringio/stringio.c')
-rw-r--r-- | ext/stringio/stringio.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index e261674551..a64aaf837c 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -98,9 +98,9 @@ get_strio(self) #define StringIO(obj) get_strio(obj) -#define CLOSED(ptr) NIL_P((ptr)->string) -#define READABLE(ptr) (!CLOSED(ptr) && ((ptr)->flags & FMODE_READABLE)) -#define WRITABLE(ptr) (!CLOSED(ptr) && ((ptr)->flags & FMODE_WRITABLE)) +#define CLOSED(ptr) (!((ptr)->flags & FMODE_READWRITE)) +#define READABLE(ptr) ((ptr)->flags & FMODE_READABLE) +#define WRITABLE(ptr) ((ptr)->flags & FMODE_WRITABLE) static struct StringIO* readable(ptr) @@ -363,10 +363,8 @@ strio_set_string(self, string) if (!OBJ_TAINTED(self)) rb_secure(4); ptr->flags &= ~FMODE_READWRITE; - if (!NIL_P(string)) { - StringValue(string); - ptr->flags = OBJ_FROZEN(string) ? FMODE_READABLE : FMODE_READWRITE; - } + StringValue(string); + ptr->flags = OBJ_FROZEN(string) ? FMODE_READABLE : FMODE_READWRITE; ptr->pos = 0; ptr->lineno = 0; return ptr->string = string; @@ -384,7 +382,7 @@ strio_close(self) VALUE self; { struct StringIO *ptr = StringIO(self); - if (CLOSED(ptr) || !(ptr->flags & FMODE_READWRITE)) { + if (CLOSED(ptr)) { rb_raise(rb_eIOError, "closed stream"); } ptr->flags &= ~FMODE_READWRITE; |