From 50a608aab3dc7bcc538adba86953354797c3ab2d Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Fri, 12 Nov 2021 11:44:26 +0200 Subject: [PATCH] os: remove unnecessary heap allocation from os.execute --- vlib/os/os_nix.c.v | 8 ++++---- vlib/os/os_test.v | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/vlib/os/os_nix.c.v b/vlib/os/os_nix.c.v index ced0acc0d2..d4448853a6 100644 --- a/vlib/os/os_nix.c.v +++ b/vlib/os/os_nix.c.v @@ -344,23 +344,23 @@ pub fn execute(cmd string) Result { } } fd := fileno(f) - buf := unsafe { malloc_noscan(4096) } mut res := strings.new_builder(1024) defer { unsafe { res.free() } } + buf := [4096]byte{} unsafe { + pbuf := &buf[0] for { - len := C.read(fd, buf, 4096) + len := C.read(fd, pbuf, 4096) if len == 0 { break } - res.write_ptr(buf, len) + res.write_ptr(pbuf, len) } } soutput := res.str() exit_code := vpclose(f) - unsafe { free(buf) } return Result{ exit_code: exit_code output: soutput diff --git a/vlib/os/os_test.v b/vlib/os/os_test.v index 683eb80fde..e566a79162 100644 --- a/vlib/os/os_test.v +++ b/vlib/os/os_test.v @@ -858,5 +858,6 @@ fn test_execute() ? { // println('output.len: $result.output.len') // println('output hexresult: $hexresult') assert result.exit_code == 0 - assert hexresult == '7374617274004d4944444c450066696e6973680a7878' + assert hexresult.starts_with('7374617274004d4944444c450066696e697368') + assert hexresult.ends_with('0a7878') }