about summary refs log tree commit homepage
path: root/lib/PublicInbox/SearchView.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2016-04-02 22:32:01 +0000
committerEric Wong <e@80x24.org>2016-04-02 22:33:56 +0000
commit0b766f54ad829d08cc7bd66fffc8ed8515241dc3 (patch)
tree5c6f10417a81ae530a78f04eb608a510ee2d580a /lib/PublicInbox/SearchView.pm
parent83a6b503812e4f17ea2eab10c7ae1ade6427f821 (diff)
downloadpublic-inbox-0b766f54ad829d08cc7bd66fffc8ed8515241dc3.tar.gz
Reduce stack depth of arguments and rely more on state hashref
to store response state.  We may end up shoving everything
in ctx eventually.
Diffstat (limited to 'lib/PublicInbox/SearchView.pm')
-rw-r--r--lib/PublicInbox/SearchView.pm22
1 files changed, 11 insertions, 11 deletions
diff --git a/lib/PublicInbox/SearchView.pm b/lib/PublicInbox/SearchView.pm
index 8283c1aa..ab0ff19a 100644
--- a/lib/PublicInbox/SearchView.pm
+++ b/lib/PublicInbox/SearchView.pm
@@ -174,11 +174,12 @@ sub tdump {
                 ctx => $ctx,
                 anchor_idx => 0,
                 pct => \%pct,
-                cur_level => 0
+                cur_level => 0,
+                fh => $fh,
         };
         $ctx->{searchview} = 1;
-        tdump_ent($fh, $git, $state, $_, 0) for $th->rootset;
-        PublicInbox::View::thread_adj_level($fh, $state, 0);
+        tdump_ent($git, $state, $_, 0) for $th->rootset;
+        PublicInbox::View::thread_adj_level($state, 0);
         Email::Address->purge_cache;
 
         $fh->write(search_nav_bot($mset, $q). "\n\n" .
@@ -188,7 +189,7 @@ sub tdump {
 }
 
 sub tdump_ent {
-        my ($fh, $git, $state, $node, $level) = @_;
+        my ($git, $state, $node, $level) = @_;
         return unless $node;
         my $mime = $node->message;
 
@@ -201,16 +202,15 @@ sub tdump_ent {
                 };
         }
         if ($mime) {
-                my $end =
-                  PublicInbox::View::thread_adj_level($fh, $state, $level);
-                PublicInbox::View::index_entry($fh, $mime, $level, $state);
-                $fh->write($end) if $end;
+                my $end = PublicInbox::View::thread_adj_level($state, $level);
+                PublicInbox::View::index_entry($mime, $level, $state);
+                $state->{fh}->write($end) if $end;
         } else {
                 my $mid = $node->messageid;
-                PublicInbox::View::ghost_flush($fh, $state, '', $mid, $level);
+                PublicInbox::View::ghost_flush($state, '', $mid, $level);
         }
-        tdump_ent($fh, $git, $state, $node->child, $level + 1);
-        tdump_ent($fh, $git, $state, $node->next, $level);
+        tdump_ent($git, $state, $node->child, $level + 1);
+        tdump_ent($git, $state, $node->next, $level);
 }
 
 sub foot {