autofree: free global map consts and some vweb fixes

pull/9343/head
Alexander Medvednikov 2021-03-17 01:33:31 +01:00
parent b4f7a975e8
commit 091a1bab27
4 changed files with 14 additions and 1 deletions

View File

@ -325,6 +325,12 @@ mut:
data map[string][]string
}
pub fn (mut h Header) free() {
unsafe {
h.data.free()
}
}
pub struct HeaderConfig {
key CommonHeader
value string

View File

@ -4642,12 +4642,16 @@ fn (mut g Gen) const_decl_init_later(mod string, name string, val string, typ ta
}
}
if g.is_autofree {
sym := g.table.get_type_symbol(typ)
if styp.starts_with('Array_') {
g.cleanups[mod].writeln('\tarray_free(&$cname);')
}
if styp == 'string' {
else if styp == 'string' {
g.cleanups[mod].writeln('\tstring_free(&$cname);')
}
else if sym.kind == .map {
g.cleanups[mod].writeln('\tmap_free(&$cname);')
}
}
}

View File

@ -38,6 +38,7 @@ fn parse_request(mut reader io.BufferedReader) ?http.Request {
reader.read(mut body) or {}
}
}
h.free()
return http.Request{
method: method

View File

@ -298,6 +298,8 @@ pub fn run_app<T>(mut app T, port int) {
}
}
[manualfree]
fn handle_conn<T>(mut conn net.TcpConn, mut app T) {
conn.set_read_timeout(30 * time.second)
conn.set_write_timeout(30 * time.second)