about summary refs log tree commit homepage
path: root/lib/PublicInbox/Thread.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/Thread.pm')
-rw-r--r--lib/PublicInbox/Thread.pm86
1 files changed, 0 insertions, 86 deletions
diff --git a/lib/PublicInbox/Thread.pm b/lib/PublicInbox/Thread.pm
deleted file mode 100644
index 8af94616..00000000
--- a/lib/PublicInbox/Thread.pm
+++ /dev/null
@@ -1,86 +0,0 @@
-# subclass Mail::Thread and use this to workaround a memory leak
-# Based on the patch in: https://rt.cpan.org/Public/Bug/Display.html?id=22817
-#
-# Additionally, workaround for a bug where $walk->topmost returns undef:
-# - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=795913
-# - https://rt.cpan.org/Ticket/Display.html?id=106498
-#
-# And avoid recursion in recurse_down:
-# - https://rt.cpan.org/Ticket/Display.html?id=116727
-# - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833479
-#
-# License differs from the rest of public-inbox (but is compatible):
-# This library is free software; you can redistribute it and/or modify
-# it under the same terms as Perl itself.
-package PublicInbox::Thread;
-use strict;
-use warnings;
-use base qw(Mail::Thread);
-# WARNING! both these Mail::Thread knobs were found by inspecting
-# the Mail::Thread 2.55 source code, and we have some monkey patches
-# in PublicInbox::Thread to fix memory leaks.  Since Mail::Thread
-# appears unmaintained, I suppose it's safe to depend on these
-# variables for now:
-{
-        no warnings 'once';
-        # we want strict threads to expose (and hopefully discourage)
-        # use of broken email clients
-        $Mail::Thread::nosubject = 1;
-        # Keep ghosts with only a single direct child,
-        # don't hide that there may be missing messages.
-        $Mail::Thread::noprune = 1;
-}
-
-if ($Mail::Thread::VERSION <= 2.55) {
-        eval q(sub _container_class { 'PublicInbox::Thread::Container' });
-}
-
-package PublicInbox::Thread::Container;
-use strict;
-use warnings;
-use base qw(Mail::Thread::Container);
-use Scalar::Util qw(weaken);
-sub parent { @_ == 2 ? weaken($_[0]->{parent} = $_[1]) : $_[0]->{parent} }
-
-sub topmost {
-        $_[0]->SUPER::topmost || PublicInbox::Thread::CPANRTBug106498->new;
-}
-
-# non-recursive version of recurse_down to avoid stack depth warnings
-sub recurse_down {
-        my ($self, $callback) = @_;
-        my %seen;
-        my @q = ($self);
-        while (my $cont = shift @q) {
-                $seen{$cont}++;
-                $callback->($cont);
-
-                if (my $next = $cont->next) {
-                        if ($seen{$next}) {
-                                $cont->next(undef);
-                        } else {
-                                push @q, $next;
-                        }
-                }
-                if (my $child = $cont->child) {
-                        if ($seen{$child}) {
-                                $cont->child(undef);
-                        } else {
-                                push @q, $child;
-                        }
-                }
-        }
-}
-
-# ref:
-# - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=795913
-# - https://rt.cpan.org/Ticket/Display.html?id=106498
-package PublicInbox::Thread::CPANRTBug106498;
-use strict;
-use warnings;
-
-sub new { bless {}, $_[0] }
-
-sub simple_subject {}
-
-1;