From 28d5a8d647e3ab56cc5570af0d6f3ccf75dc91f2 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 22 Sep 2021 02:24:30 +0000 Subject: treewide: fix %SIG localization, harder This fixes the occasional t/lei-sigpipe.t infinite loop under "make check-run". Link: http://nntp.perl.org/group/perl.perl5.porters/258784 Followup-to: b552bb9150775fe4 ("daemon+watch: fix localization of %SIG for non-signalfd users") --- lib/PublicInbox/ExtSearchIdx.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/PublicInbox/ExtSearchIdx.pm') diff --git a/lib/PublicInbox/ExtSearchIdx.pm b/lib/PublicInbox/ExtSearchIdx.pm index e0ba6c32..6b29789a 100644 --- a/lib/PublicInbox/ExtSearchIdx.pm +++ b/lib/PublicInbox/ExtSearchIdx.pm @@ -1272,7 +1272,7 @@ sub event_step { # PublicInbox::DS::requeue callback sub eidx_watch { # public-inbox-extindex --watch main loop my ($self, $opt) = @_; - local %SIG = %SIG; + local @SIG{keys %SIG} = values %SIG; for my $sig (qw(HUP USR1 TSTP QUIT INT TERM)) { $SIG{$sig} = sub { warn "SIG$sig ignored while scanning\n" }; } @@ -1307,7 +1307,7 @@ sub eidx_watch { # public-inbox-extindex --watch main loop $sig->{QUIT} = $sig->{INT} = $sig->{TERM} = $quit; my $sigfd = PublicInbox::Sigfd->new($sig, $PublicInbox::Syscall::SFD_NONBLOCK); - %SIG = (%SIG, %$sig) if !$sigfd; + @SIG{keys %$sig} = values(%$sig) if !$sigfd; local $self->{-watch_sync} = $sync; # for ->on_inbox_unlock if (!$sigfd) { # wake up every second to accept signals if we don't -- cgit v1.2.3-24-ge0c7