summaryrefslogtreecommitdiff
path: root/include/ruby
diff options
context:
space:
mode:
Diffstat (limited to 'include/ruby')
-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()