Re: [PATCH v4 2/2] diff.c: More changes and tests around utf8_strwidth()
From: Johannes Schindelin <hidden>
Date: 2022-09-05 10:15:03
Hi Torsten, thank you for working on a new iteration! On Sat, 3 Sep 2022, tboegi@web.de wrote:
quoted hunk ↗ jump to hunk
[...]diff --git a/diff.c b/diff.c index b5df464de5..35b9da90fe 100644 --- a/diff.c +++ b/diff.c@@ -2734,7 +2734,7 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options) char *name = file->print_name; uintmax_t added = file->added; uintmax_t deleted = file->deleted; - int name_len; + int name_len, padding;
I had a look and `len` is also declard as an `int`.
quoted hunk ↗ jump to hunk
if (!file->is_interesting && (added + deleted == 0)) continue;@@ -2753,10 +2753,14 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options) if (slash) name = slash; } + padding = len - utf8_strwidth(name); + if (padding < 0) + padding = 0;
I would have had a slight preference for something like this: int name_len = utf8_strwidth(name); int padding = name_len < len ? len - name_len : 0; i.e. avoid the potentially negative difference. (Ideally, I would have liked the type to be changed to `size_t`, but that is impractical due to the variables' use in `%.*s` formats.) But it is not worth a new iteration on its own, and I am very happy with the current iteration. Thanks! Dscho