]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Git.pm
doc: re-add missing 1.6 release notes
[public-inbox.git] / lib / PublicInbox / Git.pm
index f7332bb60e29a82b84ce49aacbe280ef01f0e665..3d97300c43c3f0fca345d6719d925d3b9ad652eb 100644 (file)
@@ -365,8 +365,17 @@ sub popen {
 sub qx {
        my $self = shift;
        my $fh = $self->popen(@_);
-       local $/ = wantarray ? "\n" : undef;
-       <$fh>;
+       if (wantarray) {
+               local $/ = "\n";
+               my @ret = <$fh>;
+               close $fh; # caller should check $?
+               @ret;
+       } else {
+               local $/;
+               my $ret = <$fh>;
+               close $fh; # caller should check $?
+               $ret;
+       }
 }
 
 # check_async and cat_async may trigger the other, so ensure they're
@@ -498,14 +507,13 @@ sub modified ($) {
 # templates/this--description in git.git
 sub manifest_entry {
        my ($self, $epoch, $default_desc) = @_;
-       my ($fh, $pid) = $self->popen('show-ref');
+       my $fh = $self->popen('show-ref');
        my $dig = Digest::SHA->new(1);
        while (read($fh, my $buf, 65536)) {
                $dig->add($buf);
        }
-       close $fh;
-       waitpid($pid, 0);
-       return if $?; # empty, uninitialized git repo
+       close $fh or return; # empty, uninitialized git repo
+       undef $fh; # for open, below
        my $git_dir = $self->{git_dir};
        my $ent = {
                fingerprint => $dig->hexdigest,