… | |
… | |
249 | PUSHs (sv_events); |
249 | PUSHs (sv_events); |
250 | |
250 | |
251 | PUTBACK; |
251 | PUTBACK; |
252 | call_sv (w->cb_sv, G_DISCARD | G_VOID | G_EVAL); |
252 | call_sv (w->cb_sv, G_DISCARD | G_VOID | G_EVAL); |
253 | |
253 | |
254 | if (expect_false (sv_self_cache)) |
254 | if (expect_false (SvREFCNT (sv_self) != 1 || sv_self_cache)) |
255 | SvREFCNT_dec (sv_self); |
255 | SvREFCNT_dec (sv_self); |
256 | else |
256 | else |
257 | { |
257 | { |
258 | SvREFCNT_dec (SvRV (sv_self)); |
258 | SvREFCNT_dec (SvRV (sv_self)); |
259 | SvRV_set (sv_self, &PL_sv_undef); |
259 | SvRV_set (sv_self, &PL_sv_undef); |
260 | sv_self_cache = sv_self; |
260 | sv_self_cache = sv_self; |
261 | } |
261 | } |
262 | |
262 | |
263 | if (expect_false (sv_events_cache)) |
263 | if (expect_false (SvREFCNT (sv_events) != 1 || sv_events_cache)) |
264 | SvREFCNT_dec (sv_events); |
264 | SvREFCNT_dec (sv_events); |
265 | else |
265 | else |
266 | sv_events_cache = sv_events; |
266 | sv_events_cache = sv_events; |
267 | |
267 | |
268 | if (expect_false (SvTRUE (ERRSV))) |
268 | if (expect_false (SvTRUE (ERRSV))) |