my ($ctx, $eml) = @_;
if ($eml) { # called by WwwStream::async_eml or getline
my $smsg = $ctx->{smsg};
- $ctx->{smsg} = $ctx->{over}->next_by_mid(@{$ctx->{next_arg}});
+ my $over = $ctx->{ibx}->over;
+ $ctx->{smsg} = $over ? $over->next_by_mid(@{$ctx->{next_arg}})
+ : $ctx->gone('over');
$ctx->{mhref} = ($ctx->{nr} || $ctx->{smsg}) ?
"../${\mid_href($smsg->{mid})}/" : '';
my $obuf = $ctx->{obuf} = _msg_page_prepare_obuf($eml, $ctx);
my ($ctx) = @_;
my $ibx = $ctx->{ibx};
$ctx->{-obfs_ibx} = $ibx->{obfuscate} ? $ibx : undef;
- my $over = $ctx->{over} = $ibx->over or return no_over_html($ctx);
+ my $over = $ibx->over or return no_over_html($ctx);
my ($id, $prev);
my $next_arg = $ctx->{next_arg} = [ $ctx->{mid}, \$id, \$prev ];
my $nl = $idx eq '1' ? '' : "\n"; # like join("\n", ...)
my $size = length($part->body);
+ delete $part->{bdy}; # save memory
# hide attributes normally, unless we want to aid users in
# spotting MUA problems:
$ctx->{-spfx} = $spfx;
};
- # some editors don't put trailing newlines at the end:
- $s .= "\n" unless $s =~ /\n\z/s;
-
# split off quoted and unquoted blocks:
my @sections = PublicInbox::MsgIter::split_quotes($s);
undef $s; # free memory
attach_link($ctx, $ct, $p, $fn, $err);
$$rv .= "\n";
}
+ delete $part->{bdy}; # save memory
foreach my $cur (@sections) {
if ($cur =~ /\A>/) {
# we use a <span> here to allow users to specify
$$skel .= delete($ctx->{sl_note}) || '';
}
- my $f = ascii_html($smsg->{from_name});
+ my $f = ascii_html(delete $smsg->{from_name});
my $obfs_ibx = $ctx->{-obfs_ibx};
obfuscate_addrs($obfs_ibx, $f) if $obfs_ibx;