From 6416ee33ebfe649e7e224f6ad5f80c40b128cce6 Mon Sep 17 00:00:00 2001 From: Alan Wu Date: Thu, 13 Jun 2024 17:59:40 -0400 Subject: [PATCH] Simplify unaligned write for pre-computed string hash --- string.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/string.c b/string.c index ab26037262..59ddb6e741 100644 --- a/string.c +++ b/string.c @@ -376,9 +376,8 @@ str_precompute_hash(VALUE str) RUBY_ASSERT(free_bytes >= sizeof(st_index_t)); #endif - typedef struct {char bytes[sizeof(st_index_t)];} unaligned_index; - union {st_index_t i; unaligned_index b;} u = {.i = str_do_hash(str)}; - *(unaligned_index *)(RSTRING_END(str) + TERM_LEN(str)) = u.b; + st_index_t hash = str_do_hash(str); + memcpy(RSTRING_END(str) + TERM_LEN(str), &hash, sizeof(hash)); FL_SET(str, STR_PRECOMPUTED_HASH);