mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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
This commit is contained in:
parent
81cc5f0cd8
commit
41349a4064
2 changed files with 11 additions and 8 deletions
|
|
@ -1,3 +1,8 @@
|
||||||
|
Sat Aug 13 18:35:27 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* ext/stringio/stringio.c (strio_set_string): disallow nil.
|
||||||
|
http://www.rubyist.net/~nobu/t/20050811.html#c05
|
||||||
|
|
||||||
Thu Aug 11 23:29:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Thu Aug 11 23:29:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* ext/stringio/stringio.c: keep holding string after closed.
|
* ext/stringio/stringio.c: keep holding string after closed.
|
||||||
|
|
|
||||||
|
|
@ -98,9 +98,9 @@ get_strio(self)
|
||||||
|
|
||||||
#define StringIO(obj) get_strio(obj)
|
#define StringIO(obj) get_strio(obj)
|
||||||
|
|
||||||
#define CLOSED(ptr) NIL_P((ptr)->string)
|
#define CLOSED(ptr) (!((ptr)->flags & FMODE_READWRITE))
|
||||||
#define READABLE(ptr) (!CLOSED(ptr) && ((ptr)->flags & FMODE_READABLE))
|
#define READABLE(ptr) ((ptr)->flags & FMODE_READABLE)
|
||||||
#define WRITABLE(ptr) (!CLOSED(ptr) && ((ptr)->flags & FMODE_WRITABLE))
|
#define WRITABLE(ptr) ((ptr)->flags & FMODE_WRITABLE)
|
||||||
|
|
||||||
static struct StringIO*
|
static struct StringIO*
|
||||||
readable(ptr)
|
readable(ptr)
|
||||||
|
|
@ -363,10 +363,8 @@ strio_set_string(self, string)
|
||||||
|
|
||||||
if (!OBJ_TAINTED(self)) rb_secure(4);
|
if (!OBJ_TAINTED(self)) rb_secure(4);
|
||||||
ptr->flags &= ~FMODE_READWRITE;
|
ptr->flags &= ~FMODE_READWRITE;
|
||||||
if (!NIL_P(string)) {
|
StringValue(string);
|
||||||
StringValue(string);
|
ptr->flags = OBJ_FROZEN(string) ? FMODE_READABLE : FMODE_READWRITE;
|
||||||
ptr->flags = OBJ_FROZEN(string) ? FMODE_READABLE : FMODE_READWRITE;
|
|
||||||
}
|
|
||||||
ptr->pos = 0;
|
ptr->pos = 0;
|
||||||
ptr->lineno = 0;
|
ptr->lineno = 0;
|
||||||
return ptr->string = string;
|
return ptr->string = string;
|
||||||
|
|
@ -384,7 +382,7 @@ strio_close(self)
|
||||||
VALUE self;
|
VALUE self;
|
||||||
{
|
{
|
||||||
struct StringIO *ptr = StringIO(self);
|
struct StringIO *ptr = StringIO(self);
|
||||||
if (CLOSED(ptr) || !(ptr->flags & FMODE_READWRITE)) {
|
if (CLOSED(ptr)) {
|
||||||
rb_raise(rb_eIOError, "closed stream");
|
rb_raise(rb_eIOError, "closed stream");
|
||||||
}
|
}
|
||||||
ptr->flags &= ~FMODE_READWRITE;
|
ptr->flags &= ~FMODE_READWRITE;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue