summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog2
-rwxr-xr-xinfra/dgit-repos-policy-debian7
2 files changed, 6 insertions, 3 deletions
diff --git a/debian/changelog b/debian/changelog
index 7543f58..21726d0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -25,6 +25,8 @@ dgit (1.5~~) unstable; urgency=medium
Infrastructure:
* Better error handling in dgit-repos-policy-debian.
+ * dgit-repos-policy-debian.: fix git-cat-file-handling with multiple
+ taints in db (!).
Documentation:
* Document the dgit-distro.DISTRO.quilt-mode config setting.
diff --git a/infra/dgit-repos-policy-debian b/infra/dgit-repos-policy-debian
index d687a3e..4dab576 100755
--- a/infra/dgit-repos-policy-debian
+++ b/infra/dgit-repos-policy-debian
@@ -352,9 +352,6 @@ END
my $mustreject=0;
while (my $taintid = shift @taintids) {
- # git cat-file prints a spurious newline after it gets EOF
- # This is not documented. I guess it might go away. So we
- # just read what we expect and then let it get SIGPIPE.
$!=0; $_ = <CHKOUT>;
die "($taintid @objscatcmd) $!" unless defined $_;
printdebug "|< ", $_ if $debuglevel>=2;
@@ -367,6 +364,10 @@ END
(read CHKOUT, $drop, $nbytes) == $nbytes
or die "($taintid @objscatcmd) $!";
+ $!=0; $_ = <CHKOUT>;
+ die "($taintid @objscatcmd) $!" unless defined $_;
+ die "($taintid @objscatcmd) $_ ?" if m/\S/;
+
$taintinfoq ||= $poldbh->prepare(<<END);
SELECT package, time, comment FROM taints WHERE taint_id = ?
END