From c1bfa84f17b9d7924d112e3dd6ef2043041ef0fc Mon Sep 17 00:00:00 2001 From: noah Date: Mon, 9 Jan 2012 17:14:28 -0800 Subject: [PATCH] fix memory leaks in bz_reader_read --- ext/bzip2/reader.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ext/bzip2/reader.c b/ext/bzip2/reader.c index 1eedacc..c535799 100644 --- a/ext/bzip2/reader.c +++ b/ext/bzip2/reader.c @@ -316,6 +316,7 @@ VALUE bz_reader_read(int argc, VALUE *argv, VALUE obj) { OBJ_TAINT(res); } if (n == 0) { + free(bzf->buf); return res; } while (1) { @@ -325,12 +326,14 @@ VALUE bz_reader_read(int argc, VALUE *argv, VALUE obj) { res = rb_str_cat(res, bzf->bzs.next_out, n); bzf->bzs.next_out += n; bzf->bzs.avail_out -= n; + free(bzf->buf); return res; } if (total) { res = rb_str_cat(res, bzf->bzs.next_out, total); } if (bz_next_available(bzf, 0) == BZ_STREAM_END) { + free(bzf->buf); return res; } }