On Sun, Nov 25, 2018 at 05:28:35AM +0100, Torsten Bögershausen wrote: > On Sat, Nov 24, 2018 at 08:33:37PM +0100, Ævar Arnfjörð Bjarmason wrote: > > > > On Wed, Sep 05 2018, Ævar Arnfjörð Bjarmason wrote: > > > > > On Wed, Sep 05 2018, Eric Sunshine wrote: > > [] > > > > SunCC used to be ahead of GCC & Clang when it came to certain classes of > > > warnings, but e.g. now everything it complains about is because it > > > doesn't understand C as well, e.g. we have quite a few compile warnings > > > due to code like this, which it claims is unreachable (but isn't): > > > https://github.com/git/git/blob/v2.19.0-rc2/read-cache.c#L950-L955 > > > > Wait a second - even if the compiler claims something (wrong)... > there a still 1+1/2 questions from my side: > > > int verify_path(const char *path, unsigned mode) > { > char c; > ^ > /* Q1: should "c" be initialized like this: */ > char c = *path; > > if (has_dos_drive_prefix(path)) > return 0; > > goto inside; > ^^^^^^^^^^^^ /* Q2: and why do we need the "goto" here ? */ > for (;;) { > if (!c) > return 1; > if (is_dir_sep(c)) { > inside: After some re-reading, I think that the "goto inside" was just hard to read.... Out of interest: would the following make the compiler happy ? diff --git a/read-cache.c b/read-cache.c index 49add63fe1..d574d58b9d 100644 --- a/read-cache.c +++ b/read-cache.c @@ -951,17 +951,15 @@ static int verify_dotfile(const char *rest, unsigned mode) int verify_path(const char *path, unsigned mode) { - char c; + char c = *path ? '/' : '\0'; if (has_dos_drive_prefix(path)) return 0; - goto inside; for (;;) { if (!c) return 1; if (is_dir_sep(c)) { -inside: if (protect_hfs) { if (is_hfs_dotgit(path)) return 0;