vweb: fix a leak
parent
b04e509830
commit
0138f46797
|
@ -115,6 +115,7 @@ pub fn (mut b Builder) str() string {
|
|||
b.buf << `\0`
|
||||
s := string(b.buf,b.len)
|
||||
bis := b.initial_size
|
||||
//free(b.buf.data)
|
||||
b.buf = []byte{cap: bis}
|
||||
b.len = 0
|
||||
return s
|
||||
|
|
|
@ -437,6 +437,17 @@ fn (mut g Gen) sub8_var(reg Register, var_offset int) {
|
|||
g.println('sub8 $reg,DWORD PTR[rbp-$var_offset.hex2()]')
|
||||
}
|
||||
|
||||
fn (mut g Gen) mul8_var(reg Register, var_offset int) {
|
||||
g.write8(0x0f)
|
||||
g.write8(0xaf)
|
||||
match reg {
|
||||
.eax, .rax { g.write8(0x45) }
|
||||
else { verror('mul8_var') }
|
||||
}
|
||||
g.write8(0xff - var_offset + 1)
|
||||
g.println('mul8 $reg,DWORD PTR[rbp-$var_offset.hex2()]')
|
||||
}
|
||||
|
||||
fn (mut g Gen) leave() {
|
||||
g.write8(0xc9)
|
||||
g.println('leave')
|
||||
|
@ -732,6 +743,7 @@ fn (mut g Gen) infix_expr(node ast.InfixExpr) {
|
|||
var_offset := g.get_var_offset(ident.name)
|
||||
match node.op {
|
||||
.plus { g.add8_var(.eax, var_offset) }
|
||||
.mul { g.mul8_var(.eax, var_offset) }
|
||||
.minus { g.sub8_var(.eax, var_offset) }
|
||||
else {}
|
||||
}
|
||||
|
|
|
@ -11,11 +11,19 @@ fn print_number(n int) {
|
|||
if n == 9 { println('9') }
|
||||
}
|
||||
|
||||
struct User {
|
||||
age int
|
||||
}
|
||||
|
||||
fn print_user(u User) {
|
||||
|
||||
}
|
||||
|
||||
fn test_add() {
|
||||
println('test_add()')
|
||||
x := 2
|
||||
y := 3
|
||||
z := x + y
|
||||
y :=3
|
||||
z := x * y
|
||||
q := y - x
|
||||
print_number(x)
|
||||
print_number(y)
|
||||
|
@ -26,5 +34,5 @@ fn test_add() {
|
|||
fn main() {
|
||||
println('start')
|
||||
test_add()
|
||||
println('end')
|
||||
println('end1l')
|
||||
}
|
||||
|
|
|
@ -58,6 +58,7 @@ fn (mut ctx Context) send_response_to_client(mimetype string, res string) bool {
|
|||
if ctx.done { return false }
|
||||
ctx.done = true
|
||||
mut sb := strings.new_builder(1024)
|
||||
defer { sb.free() }
|
||||
sb.write('HTTP/1.1 200 OK\r\nContent-Type: ') sb.write(mimetype)
|
||||
sb.write('\r\nContent-Length: ') sb.write(res.len.str())
|
||||
sb.write(ctx.headers)
|
||||
|
@ -65,7 +66,7 @@ fn (mut ctx Context) send_response_to_client(mimetype string, res string) bool {
|
|||
sb.write(headers_close)
|
||||
sb.write(res)
|
||||
ctx.conn.send_string(sb.str()) or { return false }
|
||||
sb.free()
|
||||
//sb.free()
|
||||
return true
|
||||
}
|
||||
|
||||
|
@ -304,6 +305,7 @@ fn handle_conn<T>(conn net.Socket, mut app T) {
|
|||
return
|
||||
}
|
||||
app.vweb.send_response_to_client(mime_type, data)
|
||||
data.free()
|
||||
return
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue