]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/OnDestroy.pm
No ext_urls
[public-inbox.git] / lib / PublicInbox / OnDestroy.pm
index 841f87d45eabe27ea676536f64268a88127a4953..d9a6cd241becf48025f37f11389b94a4ee821396 100644 (file)
@@ -1,15 +1,23 @@
-# Copyright (C) 2020 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 
 package PublicInbox::OnDestroy;
+use v5.12;
 
 sub new {
        shift; # ($class, $cb, @args)
        bless [ @_ ], __PACKAGE__;
 }
 
+sub cancel { @{$_[0]} = () }
+
 sub DESTROY {
        my ($cb, @args) = @{$_[0]};
+       if (!ref($cb) && $cb) {
+               my $pid = $cb;
+               return if $pid != $$;
+               $cb = shift @args;
+       }
        $cb->(@args) if $cb;
 }