From 2bc155b455048b127e5ae883a0e5a9964ef437ae Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 28 May 2021 00:07:52 +0000 Subject: viewdiff: make $UNSAFE a variable There's no sense in using a constant here since it gets copied into the uri_escape_utf8 function anyways. Furthermore, inlined constants still leave behind a subroutine and subs cost several KB of memory. Finally, add a comment as to why it's different than the default escape, since I just spent a minute wondering that. --- lib/PublicInbox/ViewDiff.pm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/PublicInbox/ViewDiff.pm b/lib/PublicInbox/ViewDiff.pm index d2c5fabe..05acc242 100644 --- a/lib/PublicInbox/ViewDiff.pm +++ b/lib/PublicInbox/ViewDiff.pm @@ -15,8 +15,7 @@ use URI::Escape qw(uri_escape_utf8); use PublicInbox::Hval qw(ascii_html to_attr); use PublicInbox::Git qw(git_unquote); -sub UNSAFE () { "^A-Za-z0-9\-\._~/" } - +my $UNSAFE = "^A-Za-z0-9\-\._~/"; # '/' + $URI::Escape::Unsafe{RFC3986} my $OID_NULL = '0{7,}'; my $OID_BLOB = '[a-f0-9]{7,}'; my $LF = qr!\n!; @@ -124,14 +123,14 @@ sub diff_header ($$$) { $pa = (split(m'/', git_unquote($pa), 2))[1] if $pa ne '/dev/null'; $pb = (split(m'/', git_unquote($pb), 2))[1] if $pb ne '/dev/null'; if ($pa eq $pb && $pb ne '/dev/null') { - $dctx->{Q} = "?b=".uri_escape_utf8($pb, UNSAFE); + $dctx->{Q} = "?b=".uri_escape_utf8($pb, $UNSAFE); } else { my @q; if ($pb ne '/dev/null') { - push @q, 'b='.uri_escape_utf8($pb, UNSAFE); + push @q, 'b='.uri_escape_utf8($pb, $UNSAFE); } if ($pa ne '/dev/null') { - push @q, 'a='.uri_escape_utf8($pa, UNSAFE); + push @q, 'a='.uri_escape_utf8($pa, $UNSAFE); } $dctx->{Q} = '?'.join('&', @q); } -- cgit v1.2.3-24-ge0c7