Bug #10892 » 0001-load.c-unlock-the-new-shield.patch
| load.c | ||
|---|---|---|
|
switch (rb_thread_shield_wait((VALUE)data)) {
|
||
|
case Qfalse:
|
||
|
data = (st_data_t)ftptr;
|
||
|
st_insert(loading_tbl, data, (st_data_t)rb_thread_shield_new());
|
||
|
VALUE new_shield = rb_thread_shield_new();
|
||
|
/* rb_thread_shield_new() automatically pre-locks the new shield, since this branch indicates
|
||
|
the failure to acquire the lock, the newly installed shield shouldn't be locked */
|
||
|
rb_thread_shield_release(new_shield);
|
||
|
st_insert(loading_tbl, data, (st_data_t)new_shield);
|
||
|
return 0;
|
||
|
case Qnil:
|
||
|
return 0;
|
||
- « Previous
- 1
- 2
- Next »