about summary refs log tree commit homepage
path: root/lib/PublicInbox/LeiQuery.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-05-28 09:45:20 +0000
committerEric Wong <e@80x24.org>2021-05-28 18:28:05 +0000
commit74b5dc0569db5adb4cc931ce3c3b1b50507eb31d (patch)
tree517e3e6e920e73dcdd942e3df34bf958bc104d83 /lib/PublicInbox/LeiQuery.pm
parent6778614fc11224b6b472a3830543c0f6635193f8 (diff)
downloadpublic-inbox-74b5dc0569db5adb4cc931ce3c3b1b50507eb31d.tar.gz
Every tick of the event loop can change the working directory,
so we need to restore it for every client if they operate
in different directories.

This would be easier if we had openat(2) and friends in Perl;
but Inline::C is practically required for lei, now.
Diffstat (limited to 'lib/PublicInbox/LeiQuery.pm')
-rw-r--r--lib/PublicInbox/LeiQuery.pm4
1 files changed, 1 insertions, 3 deletions
diff --git a/lib/PublicInbox/LeiQuery.pm b/lib/PublicInbox/LeiQuery.pm
index 1999a534..0435a516 100644
--- a/lib/PublicInbox/LeiQuery.pm
+++ b/lib/PublicInbox/LeiQuery.pm
@@ -51,9 +51,7 @@ sub qstr_add { # PublicInbox::InputPipe::consume callback for --stdin
         my ($self) = @_; # $_[1] = $rbuf
         if (defined($_[1])) {
                 $_[1] eq '' and return eval {
-                        if (my $dfd = $self->{3}) {
-                                chdir($dfd) or return $self->fail("fchdir: $!");
-                        }
+                        $self->fchdir or return;
                         $self->{mset_opt}->{q_raw} = $self->{mset_opt}->{qstr};
                         $self->{lse}->query_approxidate($self->{lse}->git,
                                                 $self->{mset_opt}->{qstr});