* 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:
akr 2008-08-27 17:19:19 +00:00
Родитель c28edc5012
Коммит a08b97c2f6
3 изменённых файлов: 11 добавлений и 8 удалений

Просмотреть файл

@ -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
Просмотреть файл

@ -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;
}