From 0a924d46156a9c86ba657f2cb4e2fcee9aee81bf Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sat, 25 Oct 2025 11:57:25 +0900 Subject: Use pointer to the member Instead of the offset calculation. --- include/ruby/internal/core/rtypeddata.h | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'include/ruby/internal') diff --git a/include/ruby/internal/core/rtypeddata.h b/include/ruby/internal/core/rtypeddata.h index bf0f60b913..24e87e63f9 100644 --- a/include/ruby/internal/core/rtypeddata.h +++ b/include/ruby/internal/core/rtypeddata.h @@ -543,11 +543,10 @@ RTYPEDDATA_GET_DATA(VALUE obj) } #endif - /* We reuse the data pointer in embedded TypedData. We can't use offsetof - * since RTypedData a non-POD type in C++. */ - const size_t embedded_typed_data_size = sizeof(struct RTypedData) - sizeof(void *); - - return RTYPEDDATA_EMBEDDED_P(obj) ? (char *)obj + embedded_typed_data_size : RTYPEDDATA(obj)->data; + /* We reuse the data pointer in embedded TypedData. */ + return RTYPEDDATA_EMBEDDED_P(obj) ? + RBIMPL_CAST((void *)&(RTYPEDDATA(obj)->data)) : + RTYPEDDATA(obj)->data; } RBIMPL_ATTR_PURE() -- cgit v1.2.3