From d086b37f5bb688a79aa5a73d84f971fde7844347 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Fri, 16 Oct 2026 13:33:56 +0200 Subject: [PATCH] html: omit line-number tooltips from empty number cells A row without a parent or result line still labeled its empty number cell "Parent line number" or "Result line number", though there was no number for the tooltip to explain. Keep the tooltip only on cells that show a number, which removes about 3% of a large report's size. --- samples/arguments.html | 22 +++++++++++----------- samples/indentation.html | 22 +++++++++++----------- src/html.c | 25 ++++++++++++++----------- 3 files changed, 36 insertions(+), 33 deletions(-) diff --git a/samples/arguments.html b/samples/arguments.html index 3f25e9d..041ed0e 100644 --- a/samples/arguments.html +++ b/samples/arguments.html @@ -379,22 +379,22 @@
22{
22{
33 if (!record->active)
44 return;
-
+3 write_seqcount_begin(&record->seq);
+5 write_seqcount_begin(&record->state.seq);
+
+3 write_seqcount_begin(&record->seq);
+5 write_seqcount_begin(&record->state.seq);
34 record->value = value;
56 record->value = value;
-
+5 record->generation++;
+7 record->generation++;
-
+6 write_seqcount_end(&record->seq);
+8 write_seqcount_end(&record->state.seq);
+
+5 record->generation++;
+7 record->generation++;
+
+6 write_seqcount_end(&record->seq);
+8 write_seqcount_end(&record->state.seq);
47}
69}

Context differences

Surrounding code in the results. Signs mark lines present in only one result: − left, + right.

record.crecord.c

new
new
static void update_record(struct record *record, int value)
static void update_record(struct record *record, int value)
-
1static void update_record(struct record *record, int value)
1static void update_record(struct record *record, int value)
-
2{
2{
-
+3 if (!record->active)
-
+4 return;
-
-3 write_seqcount_begin(&record->seq);
+5 write_seqcount_begin(&record->state.seq);
-
4 record->value = value;
6 record->value = value;
-
5 record->generation++;
7 record->generation++;
-
-6 write_seqcount_end(&record->seq);
+8 write_seqcount_end(&record->state.seq);
+
1static void update_record(struct record *record, int value)
1static void update_record(struct record *record, int value)
+
2{
2{
+
+3 if (!record->active)
+
+4 return;
+
-3 write_seqcount_begin(&record->seq);
+5 write_seqcount_begin(&record->state.seq);
+
4 record->value = value;
6 record->value = value;
+
5 record->generation++;
7 record->generation++;
+
-6 write_seqcount_end(&record->seq);
+8 write_seqcount_end(&record->state.seq);
diff --git a/samples/indentation.html b/samples/indentation.html index a205474..9974ea6 100644 --- a/samples/indentation.html +++ b/samples/indentation.html @@ -378,8 +378,8 @@
44
44
55 if (req->ready) {
55 if (!req->ready)
66 return -EAGAIN;
-
+6 req->attempts++;
+7 req->attempts++;
-
+7 trace_submit(req);
+8 trace_submit(req);
+
+6 req->attempts++;
+7 req->attempts++;
+
+7 trace_submit(req);
+8 trace_submit(req);
68 ret = queue_request(req);
79 ret = queue_request(req);
79 if (!ret)
810 if (!ret)
810 req->submitted = true;
911 req->submitted = true;
@@ -387,19 +387,19 @@

counter.ccounter.c

oldnew
oldnew
static void reset_counter(struct counter *counter)
static void reset_counter(struct counter *counter)
11static void reset_counter(struct counter *counter)
11static void reset_counter(struct counter *counter)
22{
22{
-
+3 counter->generation++;
+3 counter->generation++;
+
+3 counter->generation++;
+3 counter->generation++;
34 counter->value = 0;
34 counter->value = 0;
45}
45}
-

Context differences

Surrounding code in the results. Signs mark lines present in only one result: − left, + right.

request.crequest.c

new
new
4
4
-
-5 if (req->ready) {
+5 if (!req->ready)
-
+6 return -EAGAIN;
-
-6 req->attempts++;
+7 req->attempts++;
-
-7 trace_submit(req);
+8 trace_submit(req);
-
-8 ret = queue_request(req);
+9 ret = queue_request(req);
-
-9 if (!ret)
+10 if (!ret)
-
-10 req->submitted = true;
+11 req->submitted = true;
+

Context differences

Surrounding code in the results. Signs mark lines present in only one result: − left, + right.

request.crequest.c

new
new
4
4
+
-5 if (req->ready) {
+5 if (!req->ready)
+
+6 return -EAGAIN;
+
-6 req->attempts++;
+7 req->attempts++;
+
-7 trace_submit(req);
+8 trace_submit(req);
+
-8 ret = queue_request(req);
+9 ret = queue_request(req);
+
-9 if (!ret)
+10 if (!ret)
+
-10 req->submitted = true;
+11 req->submitted = true;
Generated by diffofdiffs 1.1.0
diff --git a/src/html.c b/src/html.c index f08a01c..2f25aab 100644 --- a/src/html.c +++ b/src/html.c @@ -195,18 +195,21 @@ static void write_source_cell(FILE *out, const struct review_row *row, row->len && row->text[row->len - 1] == '\n' ? "yes" : "no", row->sign); for (int stage = 0; stage < 2; stage++) { - fprintf(out, - "", - stage ? "new" : "old", stage ? "Result" : "Parent"); - if (row->pos[stage] != SIZE_MAX) { - size_t digits = 1; - - for (size_t n = row->pos[stage] + 1; n >= 10; n /= 10) - digits++; - fprintf(out, "%zu", row->pos[stage] + 1); - layout->digits = MAX(layout->digits, digits); + const char *name = stage ? "new" : "old"; + size_t digits = 1; + + /* An empty number cell has nothing for a tooltip to explain */ + if (row->pos[stage] == SIZE_MAX) { + fprintf(out, "", name); + continue; } - fputs("", out); + + for (size_t n = row->pos[stage] + 1; n >= 10; n /= 10) + digits++; + fprintf(out, + "%zu", + name, stage ? "Result" : "Parent", row->pos[stage] + 1); + layout->digits = MAX(layout->digits, digits); } fputs("", out); write_highlighted_text(out, text, h, leg);