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:
parent
00f411c58a
commit
6b2fc33ae2
Notes:
git
2022-08-04 18:49:04 +09:00
@ -1277,7 +1277,13 @@ rb_szqueue_push(int argc, VALUE *argv, VALUE self)
|
|||||||
ccan_list_add_tail(pushq, &queue_waiter.w.node);
|
ccan_list_add_tail(pushq, &queue_waiter.w.node);
|
||||||
sq->num_waiting_push++;
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user