From 046469843c2f718bb390960391351956475e3dce Mon Sep 17 00:00:00 2001 From: Christoffer Lerno Date: Thu, 4 Aug 2022 12:56:47 +0200 Subject: [PATCH] @pool on temp usage in File.open(). Add LLVM 15. --- .github/workflows/main.yml | 2 +- lib/std/io.c3 | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1d0b5e9a8..f6ce310f1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -118,7 +118,7 @@ jobs: fail-fast: false matrix: build_type: [Release, Debug] - llvm_version: [12, 13, 14, 16] + llvm_version: [12, 13, 14, 15, 16] steps: - uses: actions/checkout@v3 diff --git a/lib/std/io.c3 b/lib/std/io.c3 index 4d199c9af..eaad62423 100644 --- a/lib/std/io.c3 +++ b/lib/std/io.c3 @@ -41,15 +41,18 @@ fn int println(char *message = "") @inline fn void! File.open(File* file, char[] filename, char[] mode) { - char* filename_copy = tmalloc(filename.len + 1); - char* mode_copy = tmalloc(mode.len + 1); + @pool() + { + char* filename_copy = tmalloc(filename.len + 1); + char* mode_copy = tmalloc(mode.len + 1); - mem::copy(filename_copy, (char*)(filename), filename.len); - mem::copy(mode_copy, (char*)(mode), mode.len); - filename_copy[filename.len] = 0; - mode_copy[filename.len] = 0; - file.file = libc::fopen(filename_copy, mode_copy); - if (!file.file) return IoError.FILE_NOT_FOUND!; + mem::copy(filename_copy, (char*)(filename), filename.len); + mem::copy(mode_copy, (char*)(mode), mode.len); + filename_copy[filename.len] = 0; + mode_copy[filename.len] = 0; + file.file = libc::fopen(filename_copy, mode_copy); + if (!file.file) return IoError.FILE_NOT_FOUND!; + }; } enum Seek