Several parts of the code need to identify lines that begin with the comment character, and do so with a simple byte equality check. As part of the transition to handling multi-byte characters, we need to match all of the bytes. For cases where we are looking in a NUL-terminated string, we can just use starts_with(), which checks all of the characters in comment_line_str. Note that we can drop the "line.len" check in wt-status.c's read_rebase_todolist(). The starts_with() function handles the case of an empty haystack buffer (it will always return false for a non-empty prefix). Signed-off-by: Jeff King <peff@xxxxxxxx> --- I think the main way these hunks could be wrong is if the buffer is not in fact NUL-terminated. In most cases we're working with a strbuf, though. add-patch.c | 2 +- sequencer.c | 2 +- trailer.c | 2 +- wt-status.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/add-patch.c b/add-patch.c index 4a10237d50..d599ca53e1 100644 --- a/add-patch.c +++ b/add-patch.c @@ -1139,7 +1139,7 @@ static int edit_hunk_manually(struct add_p_state *s, struct hunk *hunk) for (i = 0; i < s->buf.len; ) { size_t next = find_next_line(&s->buf, i); - if (s->buf.buf[i] != comment_line_char) + if (!starts_with(s->buf.buf + i, comment_line_str)) strbuf_add(&s->plain, s->buf.buf + i, next - i); i = next; } diff --git a/sequencer.c b/sequencer.c index 241e185f87..991a2dbe96 100644 --- a/sequencer.c +++ b/sequencer.c @@ -2003,7 +2003,7 @@ static int update_squash_messages(struct repository *r, return error(_("could not read '%s'"), rebase_path_squash_msg()); - eol = buf.buf[0] != comment_line_char ? + eol = !starts_with(buf.buf, comment_line_str) ? buf.buf : strchrnul(buf.buf, '\n'); strbuf_addf(&header, "%s ", comment_line_str); diff --git a/trailer.c b/trailer.c index ef9df4af55..fe18faf6c5 100644 --- a/trailer.c +++ b/trailer.c @@ -1013,7 +1013,7 @@ static void parse_trailers(struct trailer_info *info, for (i = 0; i < info->trailer_nr; i++) { int separator_pos; char *trailer = info->trailers[i]; - if (trailer[0] == comment_line_char) + if (starts_with(trailer, comment_line_str)) continue; separator_pos = find_separator(trailer, separators); if (separator_pos >= 1) { diff --git a/wt-status.c b/wt-status.c index b66c30775b..084bfc584f 100644 --- a/wt-status.c +++ b/wt-status.c @@ -1382,7 +1382,7 @@ static int read_rebase_todolist(const char *fname, struct string_list *lines) git_path("%s", fname)); } while (!strbuf_getline_lf(&line, f)) { - if (line.len && line.buf[0] == comment_line_char) + if (starts_with(line.buf, comment_line_str)) continue; strbuf_trim(&line); if (!line.len) -- 2.44.0.463.g71abcb3a9f