… | |
… | |
1916 | /* nothing to schedule: call the idle handler */ |
1916 | /* nothing to schedule: call the idle handler */ |
1917 | if (SvROK (sv_idle) |
1917 | if (SvROK (sv_idle) |
1918 | && SvOBJECT (SvRV (sv_idle))) |
1918 | && SvOBJECT (SvRV (sv_idle))) |
1919 | { |
1919 | { |
1920 | if (SvRV (sv_idle) == SvRV (coro_current)) |
1920 | if (SvRV (sv_idle) == SvRV (coro_current)) |
|
|
1921 | { |
|
|
1922 | require_pv ("Carp"); |
|
|
1923 | |
|
|
1924 | { |
|
|
1925 | dSP; |
|
|
1926 | |
|
|
1927 | ENTER; |
|
|
1928 | SAVETMPS; |
|
|
1929 | |
|
|
1930 | PUSHMARK (SP); |
1921 | croak ("FATAL: $Coro::IDLE blocked itself - did you try to block inside an event loop callback? Caught"); |
1931 | XPUSHs (sv_2mortal (newSVpv ("FATAL: $Coro::IDLE blocked itself - did you try to block inside an event loop callback? Caught", 0))); |
|
|
1932 | PUTBACK; |
|
|
1933 | call_pv ("Carp::confess", G_VOID | G_DISCARD); |
|
|
1934 | |
|
|
1935 | FREETMPS; |
|
|
1936 | LEAVE; |
|
|
1937 | } |
|
|
1938 | } |
1922 | |
1939 | |
1923 | ++coro_nready; /* hack so that api_ready doesn't invoke ready hook */ |
1940 | ++coro_nready; /* hack so that api_ready doesn't invoke ready hook */ |
1924 | api_ready (aTHX_ SvRV (sv_idle)); |
1941 | api_ready (aTHX_ SvRV (sv_idle)); |
1925 | --coro_nready; |
1942 | --coro_nready; |
1926 | } |
1943 | } |