lib/PublicInbox/View.pm | 18 ++++++++++--------
lib/PublicInbox/ViewDiff.pm | 13 +++++++++----
diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm
index 0187ec332a58faaa4c89b6bb349a5fbb07f9c5fa..41a45b0b6682a158a37c6323e492543a3d173793 100644
--- a/lib/PublicInbox/View.pm
+++ b/lib/PublicInbox/View.pm
@@ -558,15 +558,17 @@
return attach_link($upfx, $ct, $p, $fn) unless defined $s;
my ($diff, $spfx);
- if ($ibx->{-repo_objs} && $s =~ /^(?:diff|---|\+{3}) /ms) {
+ if ($s =~ /^(?:diff|---|\+{3}) /ms) {
$diff = [];
- my $n_slash = $upfx =~ tr!/!/!;
- if ($n_slash == 0) {
- $spfx = '../';
- } elsif ($n_slash == 1) {
- $spfx = '';
- } else { # nslash == 2
- $spfx = '../../';
+ if ($ibx->{-repo_objs}) {
+ my $n_slash = $upfx =~ tr!/!/!;
+ if ($n_slash == 0) {
+ $spfx = '../';
+ } elsif ($n_slash == 1) {
+ $spfx = '';
+ } else { # nslash == 2
+ $spfx = '../../';
+ }
}
};
diff --git a/lib/PublicInbox/ViewDiff.pm b/lib/PublicInbox/ViewDiff.pm
index 1aad2832bb392dbb650f9d839bcde026bb3cf3a7..0d1aefb78bdea037425867bc9f3366a7ed7b1fc5 100644
--- a/lib/PublicInbox/ViewDiff.pm
+++ b/lib/PublicInbox/ViewDiff.pm
@@ -40,7 +40,8 @@ my ($dctx, $spfx, $ca, $cb) = @_;
my $oid_a = $dctx->{oid_a};
my $oid_b = $dctx->{oid_b};
- (defined($oid_a) && defined($oid_b)) or return "@@ $ca $cb @@";
+ (defined($spfx) && defined($oid_a) && defined($oid_b)) or
+ return "@@ $ca $cb @@";
my ($n) = ($ca =~ /^-(\d+)/);
$n = defined($n) ? do { ++$n; "#n$n" } : '';
@@ -51,6 +52,11 @@ ($n) = ($cb =~ /^\+(\d+)/);
$n = defined($n) ? do { ++$n; "#n$n" } : '';
$rv .= qq( {Q}$n>$cb @@);
+}
+
+sub oid ($$$) {
+ my ($dctx, $spfx, $oid) = @_;
+ defined($spfx) ? qq({Q}>$oid) : $oid;
}
sub flush_diff ($$$$) {
@@ -90,11 +96,10 @@ }
}
$$dst .= to_html($linkify, $s);
} elsif ($s =~ s/^(index $OID_NULL\.\.)($OID_BLOB)\b//o) {
- $$dst .= qq($1{Q}>$2);
+ $$dst .= $1 . oid($dctx, $spfx, $2);
$$dst .= to_html($linkify, $s) ;
} elsif ($s =~ s/^index ($OID_NULL)(\.\.$OID_BLOB)\b//o) {
- $$dst .= 'index ';
- $$dst .= qq({Q}>$1$2);
+ $$dst .= 'index ' . oid($dctx, $spfx, $1) . $2;
$$dst .= to_html($linkify, $s);
} elsif ($s =~ /^index ($OID_BLOB)\.\.($OID_BLOB)/o) {
$dctx->{oid_a} = $1;