about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/DS.pm4
-rw-r--r--lib/PublicInbox/Eml.pm2
-rw-r--r--lib/PublicInbox/ExtMsg.pm6
-rw-r--r--lib/PublicInbox/SolverGit.pm32
-rw-r--r--lib/PublicInbox/V2Writable.pm4
-rw-r--r--lib/PublicInbox/View.pm2
-rw-r--r--lib/PublicInbox/Watch.pm4
7 files changed, 27 insertions, 27 deletions
diff --git a/lib/PublicInbox/DS.pm b/lib/PublicInbox/DS.pm
index 661be1fd..9c278307 100644
--- a/lib/PublicInbox/DS.pm
+++ b/lib/PublicInbox/DS.pm
@@ -244,7 +244,7 @@ sub reap_pids {
 }
 
 # reentrant SIGCHLD handler (since reap_pids is not reentrant)
-sub enqueue_reap { $reap_armed //= requeue(\&reap_pids) }
+sub enqueue_reap () { $reap_armed //= requeue(\&reap_pids) }
 
 sub in_loop () { $in_loop }
 
@@ -629,7 +629,7 @@ sub dwaitpid ($$$) {
         push @$wait_pids, [ @_ ]; # [ $pid, $cb, $arg ]
 
         # We could've just missed our SIGCHLD, cover it, here:
-        goto &enqueue_reap; # tail recursion
+        enqueue_reap();
 }
 
 sub _run_later () {
diff --git a/lib/PublicInbox/Eml.pm b/lib/PublicInbox/Eml.pm
index 1fecd41b..571edc5c 100644
--- a/lib/PublicInbox/Eml.pm
+++ b/lib/PublicInbox/Eml.pm
@@ -129,7 +129,7 @@ sub new {
 sub new_sub {
         my (undef, $ref) = @_;
         # special case for messages like <85k5su9k59.fsf_-_@lola.goethe.zz>
-        $$ref =~ /\A(\r?\n)/s or goto &new;
+        $$ref =~ /\A(\r?\n)/s or return new(undef, $ref);
         my $hdr = substr($$ref, 0, $+[0], ''); # sv_chop on $$ref
         bless { hdr => \$hdr, crlf => $1, bdy => $ref }, __PACKAGE__;
 }
diff --git a/lib/PublicInbox/ExtMsg.pm b/lib/PublicInbox/ExtMsg.pm
index ce1a47bb..03faf3a1 100644
--- a/lib/PublicInbox/ExtMsg.pm
+++ b/lib/PublicInbox/ExtMsg.pm
@@ -125,12 +125,12 @@ sub ext_msg {
 sub event_step {
         my ($ctx, $sync) = @_;
         # can't find a partial match in current inbox, try the others:
-        my $ibx = shift @{$ctx->{again}} or goto \&finalize_partial;
+        my $ibx = shift @{$ctx->{again}} or return finalize_partial($ctx);
         my $mids = search_partial($ibx, $ctx->{mid}) or
                         return ($sync ? undef : PublicInbox::DS::requeue($ctx));
         $ctx->{n_partial} += scalar(@$mids);
         push @{$ctx->{partial}}, [ $ibx, $mids ];
-        $ctx->{n_partial} >= PARTIAL_MAX ? goto(\&finalize_partial)
+        $ctx->{n_partial} >= PARTIAL_MAX ? finalize_partial($ctx)
                         : ($sync ? undef : PublicInbox::DS::requeue($ctx));
 }
 
@@ -156,7 +156,7 @@ sub finalize_exact {
                 # synchronous fall-through
                 $ctx->event_step while @{$ctx->{again}};
         }
-        goto \&finalize_partial;
+        finalize_partial($ctx);
 }
 
 sub finalize_partial {
diff --git a/lib/PublicInbox/SolverGit.pm b/lib/PublicInbox/SolverGit.pm
index ae3997ca..83f7a4ee 100644
--- a/lib/PublicInbox/SolverGit.pm
+++ b/lib/PublicInbox/SolverGit.pm
@@ -517,16 +517,16 @@ sub di_url ($$) {
 }
 
 sub retry_current {
-        # my ($self, $want) = @_;
-        push @{$_[0]->{todo}}, $_[1];
-        goto \&next_step # retry solve_existing
+        my ($self, $want) = @_;
+        push @{$self->{todo}}, $want;
+        next_step($self); # retry solve_existing
 }
 
-sub try_harder {
+sub try_harder ($$) {
         my ($self, $want) = @_;
 
         # do we have more inboxes to try?
-        goto \&retry_current if scalar @{$want->{try_ibxs}};
+        return retry_current($self, $want) if scalar @{$want->{try_ibxs}};
 
         my $cur_want = $want->{oid_b};
         if (length($cur_want) > $OID_MIN) { # maybe a shorter OID will work
@@ -534,7 +534,7 @@ sub try_harder {
                 chop($cur_want);
                 dbg($self, "retrying $want->{oid_b} as $cur_want");
                 $want->{oid_b} = $cur_want;
-                goto \&retry_current; # retry with shorter abbrev
+                return retry_current($self, $want); # retry with shorter abbrev
         }
 
         dbg($self, "could not find $cur_want");
@@ -564,9 +564,9 @@ sub extract_diffs_done {
                         my $job = { oid_b => $src, path_b => $di->{path_a} };
                         push @{$self->{todo}}, $job;
                 }
-                goto \&next_step; # onto the next todo item
+                return next_step($self); # onto the next todo item
         }
-        goto \&try_harder;
+        try_harder($self, $want);
 }
 
 sub extract_diff_async {
@@ -578,9 +578,8 @@ sub extract_diff_async {
                 PublicInbox::Eml->new($bref)->each_part(\&extract_diff, $x, 1);
         }
 
-        scalar(@{$want->{try_smsgs}}) ?
-                retry_current($self, $want) :
-                extract_diffs_done($self, $want);
+        scalar(@{$want->{try_smsgs}}) ? retry_current($self, $want)
+                                        : extract_diffs_done($self, $want);
 }
 
 sub resolve_patch ($$) {
@@ -605,7 +604,8 @@ sub resolve_patch ($$) {
                         }
                 }
 
-                goto(scalar @$msgs ? \&retry_current : \&extract_diffs_done);
+                return scalar(@$msgs) ? retry_current($self, $want)
+                                        : extract_diffs_done($self, $want);
         }
 
         # see if we can find the blob in an existing git repo:
@@ -626,9 +626,9 @@ sub resolve_patch ($$) {
                         return;
                 }
                 mark_found($self, $cur_want, $existing);
-                goto \&next_step; # onto patch application
+                return next_step($self); # onto patch application
         } elsif ($existing > 0) {
-                goto \&retry_current;
+                return retry_current($self, $want);
         } else { # $existing == 0: we may retry if inbox scan (below) fails
                 delete $want->{try_gits};
         }
@@ -640,9 +640,9 @@ sub resolve_patch ($$) {
                 $want->{try_smsgs} = $msgs;
                 $want->{cur_ibx} = $ibx;
                 $self->{tmp_diffs} = [];
-                goto \&retry_current;
+                return retry_current($self, $want);
         }
-        goto \&try_harder;
+        try_harder($self, $want);
 }
 
 # this API is designed to avoid creating self-referential structures;
diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm
index a1f6048f..b8abfa94 100644
--- a/lib/PublicInbox/V2Writable.pm
+++ b/lib/PublicInbox/V2Writable.pm
@@ -1267,8 +1267,8 @@ sub xapian_only {
 # public, called by public-inbox-index
 sub index_sync {
         my ($self, $opt) = @_;
-        $opt //= $_[1] //= {};
-        goto \&xapian_only if $opt->{xapian_only};
+        $opt //= {};
+        return xapian_only($self, $opt) if $opt->{xapian_only};
 
         my $pr = $opt->{-progress};
         my $epoch_max;
diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm
index 3055da20..1d5119cd 100644
--- a/lib/PublicInbox/View.pm
+++ b/lib/PublicInbox/View.pm
@@ -386,7 +386,7 @@ sub next_in_queue ($$) {
 
 sub stream_thread_i { # PublicInbox::WwwStream::getline callback
         my ($ctx, $eml) = @_;
-        goto &thread_eml_entry if $eml; # tail recursion
+        return thread_eml_entry($ctx, $eml) if $eml;
         return unless exists($ctx->{skel});
         my $ghost_ok = $ctx->{nr}++;
         while (1) {
diff --git a/lib/PublicInbox/Watch.pm b/lib/PublicInbox/Watch.pm
index 0f41dff2..8bbce929 100644
--- a/lib/PublicInbox/Watch.pm
+++ b/lib/PublicInbox/Watch.pm
@@ -651,7 +651,7 @@ sub event_step {
                 PublicInbox::Sigfd::sig_setmask($oldset);
                 die $@ if $@;
         }
-        goto(&fs_scan_step) if $self->{mdre};
+        fs_scan_step($self) if $self->{mdre};
 }
 
 sub watch_imap_fetch_all ($$) {
@@ -1066,7 +1066,7 @@ sub fs_scan_step {
 sub scan {
         my ($self, $op) = @_;
         push @{$self->{ops}}, $op;
-        goto &fs_scan_step;
+        fs_scan_step($self);
 }
 
 sub _importer_for {