From: Eric Wong <e@80x24.org>
To: meta@public-inbox.org
Subject: [PATCH 2/2] treewide: kill problematic "$h->{k} //= do {" assignments
Date: Mon, 1 Nov 2021 19:06:09 +0000 [thread overview]
Message-ID: <20211101190609.32278-3-e@80x24.org> (raw)
In-Reply-To: <20211101190609.32278-1-e@80x24.org>
As stated in the previous change, conditional hash assignments
which trigger other hash assignments seem problematic, at times.
So replace:
$h->{k} //= do { $h->{x} = ...; $val };
$h->{k} // do {
$h->{x} = ...;
$hk->{k} = $val
};
"||=" is affected the same way, and some instances of "||=" are
replaced with "//=" or "// do {", now.
---
lib/PublicInbox/Config.pm | 7 +++----
lib/PublicInbox/Git.pm | 2 +-
lib/PublicInbox/IMAP.pm | 4 ++--
lib/PublicInbox/Inbox.pm | 2 +-
lib/PublicInbox/LEI.pm | 9 +++++----
lib/PublicInbox/SharedKV.pm | 4 ++--
lib/PublicInbox/WWW.pm | 4 ++--
lib/PublicInbox/WwwStatic.pm | 2 +-
lib/PublicInbox/WwwStream.pm | 4 ++--
9 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm
index 41117ac5..0f002e5e 100644
--- a/lib/PublicInbox/Config.pm
+++ b/lib/PublicInbox/Config.pm
@@ -377,8 +377,8 @@ sub get_1 {
sub repo_objs {
my ($self, $ibxish) = @_;
- my $ibx_code_repos = $ibxish->{coderepo} or return;
- $ibxish->{-repo_objs} //= do {
+ my $ibx_code_repos = $ibxish->{coderepo} // return;
+ $ibxish->{-repo_objs} // do {
my $code_repos = $self->{-code_repos};
my @repo_objs;
for my $nick (@$ibx_code_repos) {
@@ -395,10 +395,9 @@ sub repo_objs {
push @repo_objs, $repo if $repo;
}
if (scalar @repo_objs) {
- \@repo_objs;
+ $ibxish ->{-repo_objs} = \@repo_objs;
} else {
delete $ibxish->{coderepo};
- undef;
}
}
}
diff --git a/lib/PublicInbox/Git.pm b/lib/PublicInbox/Git.pm
index 4078dd5b..309f80db 100644
--- a/lib/PublicInbox/Git.pm
+++ b/lib/PublicInbox/Git.pm
@@ -71,7 +71,7 @@ sub new {
sub git_path ($$) {
my ($self, $path) = @_;
- $self->{-git_path}->{$path} ||= do {
+ $self->{-git_path}->{$path} //= do {
local $/ = "\n";
chomp(my $str = $self->qx(qw(rev-parse --git-path), $path));
diff --git a/lib/PublicInbox/IMAP.pm b/lib/PublicInbox/IMAP.pm
index 4a7ff2f4..58a0a9e3 100644
--- a/lib/PublicInbox/IMAP.pm
+++ b/lib/PublicInbox/IMAP.pm
@@ -871,12 +871,12 @@ sub eml_index_offs_i { # PublicInbox::Eml::each_part callback
# prepares an index for BODY[$SECTION_IDX] fetches
sub eml_body_idx ($$) {
my ($eml, $section_idx) = @_;
- my $idx = $eml->{imap_all_parts} //= do {
+ my $idx = $eml->{imap_all_parts} // do {
my $all = {};
$eml->each_part(\&eml_index_offs_i, $all, 0, 1);
# top-level of multipart, BODY[0] not allowed (nz-number)
delete $all->{0};
- $all;
+ $eml->{imap_all_parts} = $all;
};
$idx->{$section_idx};
}
diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm
index b7b71268..1579d500 100644
--- a/lib/PublicInbox/Inbox.pm
+++ b/lib/PublicInbox/Inbox.pm
@@ -48,7 +48,7 @@ sub _cleanup_later ($) {
sub _set_limiter ($$$) {
my ($self, $pi_cfg, $pfx) = @_;
my $lkey = "-${pfx}_limiter";
- $self->{$lkey} ||= do {
+ $self->{$lkey} //= do {
# full key is: publicinbox.$NAME.httpbackendmax
my $mkey = $pfx.'max';
my $val = $self->{$mkey} or return;
diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm
index 78b49a3b..3e1706a0 100644
--- a/lib/PublicInbox/LEI.pm
+++ b/lib/PublicInbox/LEI.pm
@@ -130,9 +130,10 @@ sub url_folder_cache {
sub ale {
my ($self) = @_;
- $self->{ale} //= do {
+ $self->{ale} // do {
require PublicInbox::LeiALE;
- $self->_lei_cfg(1)->{ale} //= PublicInbox::LeiALE->new($self);
+ my $cfg = $self->_lei_cfg(1);
+ $self->{ale} = $cfg->{ale} //= PublicInbox::LeiALE->new($self);
};
}
@@ -1159,10 +1160,10 @@ sub event_step {
sub event_step_init {
my ($self) = @_;
my $sock = $self->{sock} or return;
- $self->{-event_init_done} //= do { # persist til $ops done
+ $self->{-event_init_done} // do { # persist til $ops done
$sock->blocking(0);
$self->SUPER::new($sock, EPOLLIN);
- $sock;
+ $self->{-event_init_done} = $sock;
};
}
diff --git a/lib/PublicInbox/SharedKV.pm b/lib/PublicInbox/SharedKV.pm
index 27407f83..4297efed 100644
--- a/lib/PublicInbox/SharedKV.pm
+++ b/lib/PublicInbox/SharedKV.pm
@@ -15,7 +15,7 @@ use File::Path qw(rmtree make_path);
sub dbh {
my ($self, $lock) = @_;
- $self->{dbh} //= do {
+ $self->{dbh} // do {
my $f = $self->{filename};
$lock //= $self->lock_for_scope_fast;
my $dbh = DBI->connect("dbi:SQLite:dbname=$f", '', '', {
@@ -36,7 +36,7 @@ CREATE TABLE IF NOT EXISTS kv (
UNIQUE (k)
)
- $dbh;
+ $self->{dbh} = $dbh;
}
}
diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm
index b4db0582..a282784a 100644
--- a/lib/PublicInbox/WWW.pm
+++ b/lib/PublicInbox/WWW.pm
@@ -468,7 +468,7 @@ sub serve_mbox_range {
sub news_www {
my ($self) = @_;
- $self->{news_www} ||= do {
+ $self->{news_www} //= do {
require PublicInbox::NewsWWW;
PublicInbox::NewsWWW->new($self->{pi_cfg});
}
@@ -476,7 +476,7 @@ sub news_www {
sub cgit {
my ($self) = @_;
- $self->{cgit} ||= do {
+ $self->{cgit} //= do {
my $pi_cfg = $self->{pi_cfg};
if (defined($pi_cfg->{'publicinbox.cgitrc'})) {
diff --git a/lib/PublicInbox/WwwStatic.pm b/lib/PublicInbox/WwwStatic.pm
index b3476ab8..eeb5e565 100644
--- a/lib/PublicInbox/WwwStatic.pm
+++ b/lib/PublicInbox/WwwStatic.pm
@@ -218,7 +218,7 @@ my %path_re_cache;
sub path_info_raw ($) {
my ($env) = @_;
my $sn = $env->{SCRIPT_NAME};
- my $re = $path_re_cache{$sn} ||= do {
+ my $re = $path_re_cache{$sn} //= do {
$sn = '/'.$sn unless index($sn, '/') == 0;
$sn =~ s!/\z!!;
qr!\A(?:https?://[^/]+)?\Q$sn\E(/[^\?\#]+)!;
diff --git a/lib/PublicInbox/WwwStream.pm b/lib/PublicInbox/WwwStream.pm
index 6d7c447f..aee78170 100644
--- a/lib/PublicInbox/WwwStream.pm
+++ b/lib/PublicInbox/WwwStream.pm
@@ -170,9 +170,9 @@ sub html_oneshot ($$;$) {
'Content-Length' => undef ];
bless $ctx, __PACKAGE__;
$ctx->{gz} = PublicInbox::GzipFilter::gz_or_noop($res_hdr, $ctx->{env});
- $ctx->{base_url} //= do {
+ $ctx->{base_url} // do {
$ctx->zmore(html_top($ctx));
- base_url($ctx);
+ $ctx->{base_url} = base_url($ctx);
};
$ctx->zmore($$sref) if $sref;
my $bdy = $ctx->zflush(_html_end($ctx));
prev parent reply other threads:[~2021-11-01 19:06 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-01 19:06 [PATCH 0/2] avoid problematic conditional hash assignments Eric Wong
2021-11-01 19:06 ` [PATCH 1/2] idx_stack: avoid conditional hash assignment weirdness Eric Wong
2021-11-01 19:06 ` Eric Wong [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://public-inbox.org/README
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211101190609.32278-3-e@80x24.org \
--to=e@80x24.org \
--cc=meta@public-inbox.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).