зеркало из https://github.com/github/ruby.git
* include/ruby/io.h (rb_io_t): refcnt field removed.
(MakeOpenFile): refcnt initialization removed. * io.c (rb_io_fptr_finalize): don't check refcnt. (rb_io_close_read): don't use refcnt. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18885 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
c28edc5012
Коммит
a08b97c2f6
|
@ -1,3 +1,11 @@
|
|||
Thu Aug 28 02:16:49 2008 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* include/ruby/io.h (rb_io_t): refcnt field removed.
|
||||
(MakeOpenFile): refcnt initialization removed.
|
||||
|
||||
* io.c (rb_io_fptr_finalize): don't check refcnt.
|
||||
(rb_io_close_read): don't use refcnt.
|
||||
|
||||
Thu Aug 28 00:07:59 2008 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* io.c (rb_io_initialize): don't accept IO object. [ruby-dev:35895]
|
||||
|
|
|
@ -35,7 +35,6 @@ typedef struct rb_io_t {
|
|||
int lineno; /* number of lines read */
|
||||
VALUE pathv; /* pathname for file */
|
||||
void (*finalize)(struct rb_io_t*,int); /* finalize proc */
|
||||
long refcnt;
|
||||
|
||||
char *wbuf; /* wbuf_off + wbuf_len <= wbuf_capa */
|
||||
int wbuf_off;
|
||||
|
@ -109,7 +108,6 @@ typedef struct rb_io_t {
|
|||
fp->lineno = 0;\
|
||||
fp->pathv = Qnil;\
|
||||
fp->finalize = 0;\
|
||||
fp->refcnt = 1;\
|
||||
fp->wbuf = NULL;\
|
||||
fp->wbuf_off = 0;\
|
||||
fp->wbuf_len = 0;\
|
||||
|
|
9
io.c
9
io.c
|
@ -3105,7 +3105,6 @@ int
|
|||
rb_io_fptr_finalize(rb_io_t *fptr)
|
||||
{
|
||||
if (!fptr) return 0;
|
||||
if (fptr->refcnt <= 0 || --fptr->refcnt) return 0;
|
||||
fptr->pathv = Qnil;
|
||||
if (0 <= fptr->fd)
|
||||
rb_io_fptr_cleanup(fptr, Qtrue);
|
||||
|
@ -3275,11 +3274,9 @@ rb_io_close_read(VALUE io)
|
|||
rb_io_t *wfptr;
|
||||
fptr_finalize(fptr, Qfalse);
|
||||
GetOpenFile(write_io, wfptr);
|
||||
if (fptr->refcnt < LONG_MAX) {
|
||||
wfptr->refcnt++;
|
||||
RFILE(io)->fptr = wfptr;
|
||||
rb_io_fptr_finalize(fptr);
|
||||
}
|
||||
RFILE(io)->fptr = wfptr;
|
||||
RFILE(write_io)->fptr = NULL;
|
||||
rb_io_fptr_finalize(fptr);
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче