about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/V2Writable.pm2
-rw-r--r--t/v2writable.t3
2 files changed, 4 insertions, 1 deletions
diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm
index 222df5c2..08d18fc0 100644
--- a/lib/PublicInbox/V2Writable.pm
+++ b/lib/PublicInbox/V2Writable.pm
@@ -390,7 +390,7 @@ sub purge {
         my ($self, $mime) = @_;
         my $purges = $self->{-inbox}->with_umask(sub {
                 remove_internal($self, $mime, undef, {});
-        });
+        }) or return;
         $self->idx_init if @$purges; # ->done is called on purges
         for my $i (0..$#$purges) {
                 defined(my $cmt = $purges->[$i]) or next;
diff --git a/t/v2writable.t b/t/v2writable.t
index ec9f56d9..f1714175 100644
--- a/t/v2writable.t
+++ b/t/v2writable.t
@@ -247,6 +247,9 @@ EOF
         ok(my $cmts = $im->purge($mime), 'purged message');
         like($cmts->[0], qr/\A[a-f0-9]{40}\z/, 'purge returned current commit');
         $im->done;
+
+        # again
+        is($im->purge($mime), undef, 'no-op returns undef');
 }
 
 {