diff --git a/src/base/base_core.h b/src/base/base_core.h index 75391382..f3bf64d1 100644 --- a/src/base/base_core.h +++ b/src/base/base_core.h @@ -489,13 +489,17 @@ struct TxtRng //////////////////////////////// //~ Globally Unique Ids -typedef struct Guid Guid; -struct Guid +typedef union Guid Guid; +union Guid { - U32 data1; - U16 data2; - U16 data3; - U8 data4[8]; + struct + { + U32 data1; + U16 data2; + U16 data3; + U8 data4[8]; + }; + U8 v[16]; }; StaticAssert(sizeof(Guid) == 16, g_guid_size_check); diff --git a/src/os/core/linux/os_core_linux.c b/src/os/core/linux/os_core_linux.c index ecd68dff..725c59dd 100644 --- a/src/os/core/linux/os_core_linux.c +++ b/src/os/core/linux/os_core_linux.c @@ -1133,14 +1133,11 @@ os_safe_call(OS_ThreadFunctionType *func, OS_ThreadFunctionType *fail_handler, v //////////////////////////////// //~ rjf: @os_hooks GUIDs (Implemented Per-OS) -internal OS_Guid +internal Guid os_make_guid(void) { - U8 random_bytes[16] = {0}; - StaticAssert(sizeof(random_bytes) == sizeof(OS_Guid), os_lnx_guid_size_check); - getrandom(random_bytes, sizeof(random_bytes), 0); - OS_Guid guid = {0}; - MemoryCopy(&guid, random_bytes, sizeof(random_bytes)); + Guid guid = {0}; + getrandom(guid.v, sizeof(guid.v), 0); guid.data3 &= 0x0fff; guid.data3 |= (4 << 12); guid.data4[0] &= 0x3f;