aboutsummaryrefslogtreecommitdiff
path: root/src/path.cpp
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2023-01-11 22:14:53 +0000
committerGitHub <noreply@github.com>2023-01-11 22:14:53 +0000
commit320062157f06d979db926fcbf407bbbdcc3028c1 (patch)
tree770bb60802ff24cc66c8e5e5837819969dc84cd6 /src/path.cpp
parent86511d44e46b6271b01df2cd1ebb83b5496e143c (diff)
parentd7d6608142c8e169a7856c9e5965619809653903 (diff)
Merge pull request #2288 from odin-lang/compiler-improvements-2023-01
Multithreading Compiler Improvements 2023-01
Diffstat (limited to 'src/path.cpp')
-rw-r--r--src/path.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/path.cpp b/src/path.cpp
index ad1d7f0af..3b359a269 100644
--- a/src/path.cpp
+++ b/src/path.cpp
@@ -225,7 +225,6 @@ gb_internal i64 get_file_size(String path) {
gb_internal ReadDirectoryError read_directory(String path, Array<FileInfo> *fi) {
GB_ASSERT(fi != nullptr);
- gbAllocator a = heap_allocator();
while (path.len > 0) {
Rune end = path[path.len-1];
@@ -242,9 +241,7 @@ gb_internal ReadDirectoryError read_directory(String path, Array<FileInfo> *fi)
return ReadDirectory_InvalidPath;
}
{
- char *c_str = alloc_cstring(a, path);
- defer (gb_free(a, c_str));
-
+ char *c_str = alloc_cstring(temporary_allocator(), path);
gbFile f = {};
gbFileError file_err = gb_file_open(&f, c_str);
defer (gb_file_close(&f));
@@ -261,6 +258,7 @@ gb_internal ReadDirectoryError read_directory(String path, Array<FileInfo> *fi)
}
+ gbAllocator a = heap_allocator();
char *new_path = gb_alloc_array(a, char, path.len+3);
defer (gb_free(a, new_path));
@@ -283,8 +281,8 @@ gb_internal ReadDirectoryError read_directory(String path, Array<FileInfo> *fi)
do {
wchar_t *filename_w = file_data.cFileName;
- i64 size = cast(i64)file_data.nFileSizeLow;
- size |= (cast(i64)file_data.nFileSizeHigh) << 32;
+ u64 size = cast(u64)file_data.nFileSizeLow;
+ size |= (cast(u64)file_data.nFileSizeHigh) << 32;
String name = string16_to_string(a, make_string16_c(filename_w));
if (name == "." || name == "..") {
gb_free(a, name.text);
@@ -302,7 +300,7 @@ gb_internal ReadDirectoryError read_directory(String path, Array<FileInfo> *fi)
FileInfo info = {};
info.name = name;
info.fullpath = path_to_full_path(a, filepath);
- info.size = size;
+ info.size = cast(i64)size;
info.is_dir = (file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
array_add(fi, info);
} while (FindNextFileW(find_file, &file_data));