diff --git a/core/os/os2/errors.odin b/core/os/os2/errors.odin index 2fc49deed..b7e89b493 100644 --- a/core/os/os2/errors.odin +++ b/core/os/os2/errors.odin @@ -57,11 +57,8 @@ link_error_delete :: proc(lerr: Maybe(Link_Error)) { is_platform_error :: proc(ferr: Error) -> (err: i32, ok: bool) { - v: Platform_Error; - if v, ok = ferr.(Platform_Error); ok { - err = v.err; - } - return; + v := or_else(ferr.(Platform_Error), {}); + return v.err, v.err != 0; } diff --git a/core/os/os2/file_stream.odin b/core/os/os2/file_stream.odin index 52f5b30e9..936d9da57 100644 --- a/core/os/os2/file_stream.odin +++ b/core/os/os2/file_stream.odin @@ -13,11 +13,7 @@ error_to_io_error :: proc(ferr: Error) -> io.Error { if ferr == nil { return .None; } - err, ok := ferr.(io.Error); - if !ok { - err = .Unknown; - } - return err; + return or_else(ferr.(io.Error), .Unknown); } diff --git a/core/testing/runner_windows.odin b/core/testing/runner_windows.odin index c64de4fe6..03ae9ede9 100644 --- a/core/testing/runner_windows.odin +++ b/core/testing/runner_windows.odin @@ -68,12 +68,7 @@ Thread_Os_Specific :: struct { thread_create :: proc(procedure: Thread_Proc) -> ^Thread { __windows_thread_entry_proc :: proc "stdcall" (t_: rawptr) -> win32.DWORD { t := (^Thread)(t_); - context = runtime.default_context(); - c := context; - if ic, ok := t.init_context.?; ok { - c = ic; - } - context = c; + context = or_else(t.init_context.?, runtime.default_context()); t.procedure(t); diff --git a/core/thread/thread_unix.odin b/core/thread/thread_unix.odin index 2ba61c53d..5bd398b7e 100644 --- a/core/thread/thread_unix.odin +++ b/core/thread/thread_unix.odin @@ -38,8 +38,6 @@ Thread_Os_Specific :: struct #align 16 { // _create :: proc(procedure: Thread_Proc, priority := Thread_Priority.Normal) -> ^Thread { __linux_thread_entry_proc :: proc "c" (t: rawptr) -> rawptr { - context = runtime.default_context(); - t := (^Thread)(t); sync.condition_wait_for(&t.start_gate); sync.condition_destroy(&t.start_gate); @@ -47,11 +45,7 @@ _create :: proc(procedure: Thread_Proc, priority := Thread_Priority.Normal) -> ^ t.start_gate = {}; t.start_mutex = {}; - c := context; - if ic, ok := t.init_context.?; ok { - c = ic; - } - context = c; + context = or_else(t.init_context.?, runtime.default_context()); t.procedure(t); diff --git a/core/thread/thread_windows.odin b/core/thread/thread_windows.odin index b8f8d15c0..ad834ddc7 100644 --- a/core/thread/thread_windows.odin +++ b/core/thread/thread_windows.odin @@ -23,12 +23,7 @@ _create :: proc(procedure: Thread_Proc, priority := Thread_Priority.Normal) -> ^ __windows_thread_entry_proc :: proc "stdcall" (t_: rawptr) -> win32.DWORD { t := (^Thread)(t_); - context = runtime.default_context(); - c := context; - if ic, ok := t.init_context.?; ok { - c = ic; - } - context = c; + context = or_else(t.init_context.?, runtime.default_context()); t.procedure(t);