Add Error as part of the return values of os2.environ

This commit is contained in:
gingerBill
2025-02-28 13:43:50 +00:00
parent 94152ca701
commit b3bbb00f1a
6 changed files with 46 additions and 41 deletions
+8 -19
View File
@@ -153,34 +153,23 @@ _clear_env :: proc() {
}
@(require_results)
_environ :: proc(allocator: runtime.Allocator) -> []string {
if err := build_env(); err != nil {
return nil
}
_environ :: proc(allocator: runtime.Allocator) -> (environ: []string, err: Error) {
build_env() or_return
sync.shared_guard(&g_env_mutex)
envs, alloc_err := make([]string, len(g_env), allocator)
if alloc_err != nil {
return nil
}
defer if alloc_err != nil {
envs := make([dynamic]string, 0, len(g_env), allocator) or_return
defer if err != nil {
for env in envs {
delete(env, allocator)
}
delete(envs, allocator)
delete(envs)
}
i: int
for k, v in g_env {
defer i += 1
envs[i], alloc_err = concatenate({k, "=", v}, allocator)
if alloc_err != nil {
return nil
}
append(&envs, concatenate({k, "=", v}, allocator) or_return)
}
return envs
environ = envs[:]
return
}