diff options
| author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2025-10-25 11:57:25 +0900 |
|---|---|---|
| committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2025-10-25 22:48:01 +0900 |
| commit | 0a924d46156a9c86ba657f2cb4e2fcee9aee81bf (patch) | |
| tree | 7ce907c66fe04303f11ba4facff580f79af212dc /include/ruby/internal | |
| parent | 8e3957cc760ddc55cfb55993b70e9f4c1a230ac2 (diff) | |
Use pointer to the member
Instead of the offset calculation.
Diffstat (limited to 'include/ruby/internal')
| -rw-r--r-- | include/ruby/internal/core/rtypeddata.h | 9 |
1 files changed, 4 insertions, 5 deletions
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() |
