--- EV/EV.xs 2008/11/20 11:25:15 1.119 +++ EV/EV.xs 2008/11/23 17:44:46 1.120 @@ -251,7 +251,7 @@ PUTBACK; call_sv (w->cb_sv, G_DISCARD | G_VOID | G_EVAL); - if (expect_false (sv_self_cache)) + if (expect_false (SvREFCNT (sv_self) != 1 || sv_self_cache)) SvREFCNT_dec (sv_self); else { @@ -260,7 +260,7 @@ sv_self_cache = sv_self; } - if (expect_false (sv_events_cache)) + if (expect_false (SvREFCNT (sv_events) != 1 || sv_events_cache)) SvREFCNT_dec (sv_events); else sv_events_cache = sv_events;