summaryrefslogtreecommitdiff
path: root/include/ruby/internal
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2025-10-25 11:57:25 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2025-10-25 22:48:01 +0900
commit0a924d46156a9c86ba657f2cb4e2fcee9aee81bf (patch)
tree7ce907c66fe04303f11ba4facff580f79af212dc /include/ruby/internal
parent8e3957cc760ddc55cfb55993b70e9f4c1a230ac2 (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.h9
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()