thread_sync.c: pass proper argument to queue_sleep in rb_szqueue_push

When I removed the SizeQueue#push timeout from my PR, I forgot to
update the `queue_sleep` parameters to be a `queue_sleep_arg`.

Somehow this worked on most archs, but on Solaris/Sparc it would
legitimately crash when trying to access the `timeout` and `end`
members of the struct.
This commit is contained in:
Jean Boussier 2022-08-04 10:37:46 +02:00
Родитель 00f411c58a
Коммит 6b2fc33ae2
1 изменённых файлов: 7 добавлений и 1 удалений

Просмотреть файл

@ -1277,7 +1277,13 @@ rb_szqueue_push(int argc, VALUE *argv, VALUE self)
ccan_list_add_tail(pushq, &queue_waiter.w.node);
sq->num_waiting_push++;
rb_ensure(queue_sleep, self, szqueue_sleep_done, (VALUE)&queue_waiter);
struct queue_sleep_arg queue_sleep_arg = {
.self = self,
.timeout = Qnil,
.end = 0
};
rb_ensure(queue_sleep, (VALUE)&queue_sleep_arg, szqueue_sleep_done, (VALUE)&queue_waiter);
}
}