From 6b7eff90860d4fb4db01ec4d1f522afa6d809632 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Fri, 14 Jan 2022 13:59:38 -0500 Subject: Separately allocate class_serial on 32-bit systems On 32-bit systems, VWA causes class_serial to not be aligned (it only guarantees 4 byte alignment but class_serial is 8 bytes and requires 8 byte alignment). This commit uses a hack to allocate class_serial through malloc. Once VWA allocates with 8 byte alignment in the future, we will revert this commit. --- class.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'class.c') diff --git a/class.c b/class.c index 1281a243ab..9739aadc73 100644 --- a/class.c +++ b/class.c @@ -208,6 +208,9 @@ class_alloc(VALUE flags, VALUE klass) #if USE_RVARGC memset(RCLASS_EXT(obj), 0, sizeof(rb_classext_t)); +# if SIZEOF_SERIAL_T != SIZEOF_VALUE + RCLASS(obj)->class_serial_ptr = ZALLOC(rb_serial_t); +# endif #else obj->ptr = ZALLOC(rb_classext_t); #endif -- cgit v1.2.1