lib/PublicInbox/Hval.pm
lib/PublicInbox/MDA.pm
lib/PublicInbox/View.pm
+lib/PublicInbox/Thread.pm
lib/PublicInbox/WWW.pm
public-inbox-learn
public-inbox-mda
MAX_PER_PAGE => 25,
};
-# FIXME: workaround https://rt.cpan.org/Public/Bug/Display.html?id=22817
-
# main function
sub generate {
my ($class, $args) = @_;
sub generate_html_index {
my ($class, $args) = @_;
- require Mail::Thread;
+ require PublicInbox::Thread;
my $max = $args->{max} || MAX_PER_PAGE;
my $feed_opts = get_feedopts($args);
});
$git = undef; # destroy pipes.
- my $th = Mail::Thread->new(@messages);
+ my $th = PublicInbox::Thread->new(@messages);
$th->thread;
my $html = "<html><head><title>$title</title>" .
'<link rel="alternate" title="Atom feed" href="' .
--- /dev/null
+# 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
+# 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);
+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} }
+
+1;
sub preload {
require PublicInbox::Feed;
require PublicInbox::View;
- require Mail::Thread;
+ require PublicInbox::Thread;
require Email::MIME;
require Digest::SHA;
require POSIX;