nooc

Unnamed repository; edit this file 'description' to name the repository.
git clone git://git.nihaljere.xyz/nooc
Log | Files | Refs | LICENSE

commit 54e7c2410d1228329fce62d50e7e6f3e9745dd60
parent d452f61d94d49b98d1b1af7582cdeb9483a8fc34
Author: Nihal Jere <nihal@nihaljere.xyz>
Date:   Sat,  4 Dec 2021 18:06:40 -0600

remove unnecessary malloc

Diffstat:
Mmain.c | 13++-----------
1 file changed, 2 insertions(+), 11 deletions(-)

diff --git a/main.c b/main.c @@ -553,17 +553,8 @@ genblock(char *buf, struct block *block) } else { decls.data[item->idx].addr = data_pushint(0); enum reg reg = getreg(); - size_t exprlen = genexpr(NULL, decls.data[item->idx].val, reg); - size_t movlen = mov_m64_r64(NULL, decls.data[item->idx].addr, reg); - char *code = malloc(exprlen + movlen); - if (!code) - error("genexpr malloc failed"); - - genexpr(code, decls.data[item->idx].val, reg); - mov_m64_r64(code + exprlen, decls.data[item->idx].addr, reg); - if (buf) - memcpy(buf, code, exprlen + movlen); - total += exprlen + movlen; + total += genexpr(buf ? buf + total : NULL, decls.data[item->idx].val, reg); + total += mov_m64_r64(buf ? buf + total : NULL, decls.data[item->idx].addr, reg); freereg(reg); } break;