diff --git a/ChangeLog b/ChangeLog index 47d727d3ac3bb3..d0d8bd312968ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Tue Mar 27 23:44:11 2012 NAKAMURA Usaku + + * io.c (io_unread): fixed memory leak. report by nagachika via IRC. + Tue Mar 27 22:44:23 2012 Nobuyoshi Nakada * configure.in (verconf.h): separate load path specific stuff from diff --git a/io.c b/io.c index d569e4d8d71006..fac42c710b1091 100644 --- a/io.c +++ b/io.c @@ -473,6 +473,7 @@ io_unread(rb_io_t *fptr) } read_size = _read(fptr->fd, buf, fptr->rbuf.len + newlines); if (read_size < 0) { + free(buf); rb_sys_fail_path(fptr->pathv); } if (read_size == fptr->rbuf.len) { @@ -483,6 +484,7 @@ io_unread(rb_io_t *fptr) newlines--; } } + free(buf); fptr->rbuf.off = 0; fptr->rbuf.len = 0; return;