diff --git a/vlib/io/buffered_reader.v b/vlib/io/buffered_reader.v index b57fcab3cc..f336e2dfed 100644 --- a/vlib/io/buffered_reader.v +++ b/vlib/io/buffered_reader.v @@ -55,6 +55,12 @@ pub fn (mut r BufferedReader) read(mut buf []byte) ?int { return read } +pub fn (mut r BufferedReader) free() { + unsafe { + r.buf.free() + } +} + // fill_buffer attempts to refill the internal buffer // and returns whether it got any data fn (mut r BufferedReader) fill_buffer() bool { diff --git a/vlib/vweb/vweb.v b/vlib/vweb/vweb.v index 7ebbade04d..3b1ca1bbc4 100644 --- a/vlib/vweb/vweb.v +++ b/vlib/vweb/vweb.v @@ -305,6 +305,9 @@ fn handle_conn(mut conn net.TcpConn, mut app T) { conn.close() or {} } mut reader := io.new_buffered_reader(reader: io.make_reader(conn)) + defer { + reader.free() + } page_gen_start := time.ticks() req := parse_request(mut reader) or { eprintln('error parsing request: $err')