From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS11403 173.228.157.0/24 X-Spam-Status: No, score=-3.9 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE, SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from pb-smtp21.pobox.com (pb-smtp21.pobox.com [173.228.157.53]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id AB58D1F8C1 for ; Sat, 9 May 2020 17:32:10 +0000 (UTC) Received: from pb-smtp21.pobox.com (unknown [127.0.0.1]) by pb-smtp21.pobox.com (Postfix) with ESMTP id 3C571C1869 for ; Sat, 9 May 2020 13:32:09 -0400 (EDT) (envelope-from kyle@kyleam.com) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to :subject:date:message-id:mime-version:content-type; s=sasl; bh=c 3HTtAaxoaLpfS9ARTnmYxcNNIo=; b=WYj+/zUg/8aJxI7Q9dKBnaZ7FNMzPM0/v NDaEoWpixN6wQjswCxoF8QKbAGLEg0waefCaw9+mV7HEZD0ED1BY295GJX0dZjSj AYDKioD1ro52+Eh97Eke6gpUrdXAQayxMhdbkd9e2KHX5h/GNGRaRmSjTsMHAi6f BOFSd8Svpc= Received: from pb-smtp21.sea.icgroup.com (unknown [127.0.0.1]) by pb-smtp21.pobox.com (Postfix) with ESMTP id 34633C1868 for ; Sat, 9 May 2020 13:32:09 -0400 (EDT) (envelope-from kyle@kyleam.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=kyleam.com; h=from:to:subject:date:message-id:mime-version:content-type; s=mesmtp; bh=6Mgn2U6kqI3q0186ctVk8NU8xQGH2GfmcyyF1ZB7dqI=; b=JFN2AQJ7HCsoKYY9764pCoeSKb0JzGC+ZZOD7tumF/Xrb82vyl54joWnjePwTDyuvEsrhUIdJAyNx+rRy1OYSusFmc8itcRavF1SjIWD2osw9gMA+COGYozvCjWTd6urE3b8MNGW7KiRBbbk0l4vOAjNLl9uo37MJZjg8msMqaA= Received: from localhost (unknown [45.33.91.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by pb-smtp21.pobox.com (Postfix) with ESMTPSA id 7181EC1867 for ; Sat, 9 May 2020 13:32:05 -0400 (EDT) (envelope-from kyle@kyleam.com) From: Kyle Meyer To: meta@public-inbox.org Subject: view: why is the diff line number incremented by one? Date: Sat, 09 May 2020 17:32:03 +0000 Message-ID: <87tv0pc8vg.fsf@kyleam.com> MIME-Version: 1.0 Content-Type: text/plain X-Pobox-Relay-ID: 004920E8-921B-11EA-926C-8D86F504CC47-24757444!pb-smtp21.pobox.com List-Id: Diff links position the line one beyond what I expect. Here's a hunk at : diff --git a/lib/PublicInbox/Eml.pm b/lib/PublicInbox/Eml.pm index 4508bd84..80e7c1af 100644 --- a/lib/PublicInbox/Eml.pm +++ b/lib/PublicInbox/Eml.pm @@ -71,11 +71,11 @@ sub re_memo ($) { # compatible with our uses of Email::MIME sub new { my $ref = ref($_[1]) ? $_[1] : \(my $cpy = $_[1]); - if ($$ref =~ /(?:\r?\n(\r?\n))/gs) { # likely + if ($$ref =~ /\r?\n(\r?\n)/s) { # likely # This can modify $$ref in-place and to avoid memcpy/memmove # on a potentially large $$ref. It does need to make a # copy for $hdr, though. Idea stolen from Email::Simple - my $hdr = substr($$ref, 0, pos($$ref), ''); # sv_chop on $$ref + my $hdr = substr($$ref, 0, $+[0], ''); # sv_chop on $$ref substr($hdr, -(length($1))) = ''; # lower SvCUR bless { hdr => \$hdr, crlf => $1, bdy => $ref }, __PACKAGE__; } elsif ($$ref =~ /^[a-z0-9-]+[ \t]*:/ims && $$ref =~ /(\r?\n)\z/s) { The link at "-71,11" is . When I follow it, I'm taken to line 72, one line below the first context line above. I haven't been able to come up with a reason why +1 would be preferable here, and I didn't spot any explanation when looking around the code. It looks like it'd just be a matter of making the two-line change below, but perhaps that causes breakage that I didn't notice with my light testing. diff --git a/lib/PublicInbox/ViewDiff.pm b/lib/PublicInbox/ViewDiff.pm index 6fe9a0d7..536bb9e3 100644 --- a/lib/PublicInbox/ViewDiff.pm +++ b/lib/PublicInbox/ViewDiff.pm @@ -50,12 +50,12 @@ sub diff_hunk ($$$$) { if (defined($spfx) && defined($oid_a) && defined($oid_b)) { my ($n) = ($ca =~ /^-([0-9]+)/); - $n = defined($n) ? do { ++$n; "#n$n" } : ''; + $n = defined($n) ? "#n$n" : ''; $$dst .= qq(@@ {Q}$n">$ca); ($n) = ($cb =~ /^\+([0-9]+)/); - $n = defined($n) ? do { ++$n; "#n$n" } : ''; + $n = defined($n) ? "#n$n" : ''; $$dst .= qq( {Q}$n">$cb @@); } else { $$dst .= "@@ $ca $cb @@";