diff --git a/src/buf_text.c b/src/buf_text.c index bc8d04680..472339def 100644 --- a/src/buf_text.c +++ b/src/buf_text.c @@ -261,34 +261,29 @@ bool git_buf_text_gather_stats( /* Counting loop */ while (scan < end) { unsigned char c = *scan++; - if (c == '\r') { - stats->cr++; - if (scan < end && *scan == '\n') - stats->crlf++; - continue; - } - if (c == '\n') { - stats->lf++; - continue; - } - if (c == 127) - /* DEL */ - stats->nonprintable++; - else if (c < 32) { - switch (c) { - /* BS, HT, ESC and FF */ - case '\b': case '\t': case '\033': case '\014': + + if (c > 0x1F && c != 0x7F) + stats->printable++; + else switch (c) { + case '\0': + stats->nul++; + stats->nonprintable++; + break; + case '\n': + stats->lf++; + break; + case '\r': + stats->cr++; + if (scan < end && *scan == '\n') + stats->crlf++; + break; + case '\t': case '\f': case '\v': case '\b': case 0x1b: /*ESC*/ stats->printable++; break; - case 0: - stats->nul++; - /* fall through */ default: stats->nonprintable++; + break; } - } - else - stats->printable++; } return (stats->nul > 0 ||