time.c: fix time_mark_and_move when WIDEVALUE_IS_WIDER

In such case the pointer need to be casted.
This commit is contained in:
Jean Boussier 2025-08-09 10:54:22 +02:00
parent 77b3495e97
commit 2a6345e957

4
time.c
View file

@ -1891,8 +1891,8 @@ static void
time_mark_and_move(void *ptr)
{
struct time_object *tobj = ptr;
if (!FIXWV_P(tobj->timew)) {
rb_gc_mark_and_move(&WIDEVAL_GET(tobj->timew));
if (!WIDEVALUE_IS_WIDER || !FIXWV_P(tobj->timew)) {
rb_gc_mark_and_move((VALUE *)&WIDEVAL_GET(tobj->timew));
}
rb_gc_mark_and_move(&tobj->vtm.year);
rb_gc_mark_and_move(&tobj->vtm.subsecx);