aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--io.c2
2 files changed, 6 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 47d727d3ac..d0d8bd3129 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Tue Mar 27 23:44:11 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_unread): fixed memory leak. report by nagachika via IRC.
+
Tue Mar 27 22:44:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (verconf.h): separate load path specific stuff from
diff --git a/io.c b/io.c
index d569e4d8d7..fac42c710b 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;