summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog5
-rwxr-xr-xdgit7
2 files changed, 10 insertions, 2 deletions
diff --git a/debian/changelog b/debian/changelog
index 9f7b5fa..8edf527 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,9 @@
dgit (3.2~) unstable; urgency=medium
- *
+ Bugfixes:
+ * dgit: Do not execute END blocks in children. So far symptoms of this
+ bug seem to be limited to duplicated error messages but I have not
+ done a thorough analysis. Closes:#850052.
--
diff --git a/dgit b/dgit
index f7f2b71..afdf2c5 100755
--- a/dgit
+++ b/dgit
@@ -156,6 +156,7 @@ our $split_brain = 0;
END {
local ($@, $?);
+ return unless forkcheck_mainprocess();
print STDERR "! $_\n" foreach $supplementary_message =~ m/^.+$/mg;
}
@@ -220,6 +221,7 @@ initdebug('');
our @end;
END {
local ($?);
+ return unless forkcheck_mainprocess();
foreach my $f (@end) {
eval { $f->(); };
print STDERR "$us: cleanup: $@" if length $@;
@@ -4473,7 +4475,10 @@ sub i_cleanup {
}
}
-END { i_cleanup(); }
+END {
+ return unless forkcheck_mainprocess();
+ i_cleanup();
+}
sub i_method {
my ($base,$selector,@args) = @_;