diff options
author | Luke Granger-Brown <git@lukegb.com> | 2020-06-03T01·24+0100 |
---|---|---|
committer | Vincent Ambo <tazjin@google.com> | 2020-06-03T01·24+0100 |
commit | 54b9925b931afbc762e03cced13e23d2b90427c2 (patch) | |
tree | 705dcd6c7b03096ce769d9cdc00eb742ff3b0e8e | |
parent | 76f4e273867b239bed818f569e491470116b6ed6 (diff) |
fix(3p/cgit): Fix compilation under Clang r/878
Clang treats function-like macros "correctly", in that, per the C11 spec: "Each subsequent instance of the function-like macro name followed by a ( [...] is replaced by the replacement list [...]". Additionally, fprintf is also permitted to be defined as a function-like macro rather than as a true function: "Any function declared in a header may be additionally implemented as a function-like macro defined in the header [...]". The specification then suggests surrounding the name of the function in parens to avoid this, which is the technique we use here to avoid the function-like macro being invoked. The other fix here is to use uintptr_t for some arithmetic, since Git is expecting an int as the value here and not a pointer.
-rw-r--r-- | third_party/cgit/filter.c | 2 | ||||
-rw-r--r-- | third_party/cgit/parsing.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/third_party/cgit/filter.c b/third_party/cgit/filter.c index 70f5b749989c..181d9a892f0b 100644 --- a/third_party/cgit/filter.c +++ b/third_party/cgit/filter.c @@ -385,7 +385,7 @@ int cgit_close_filter(struct cgit_filter *filter) void cgit_fprintf_filter(struct cgit_filter *filter, FILE *f, const char *prefix) { - filter->fprintf(filter, f, prefix); + (filter->fprintf)(filter, f, prefix); } diff --git a/third_party/cgit/parsing.c b/third_party/cgit/parsing.c index 7b3980e6b1d0..b4b5f904dc14 100644 --- a/third_party/cgit/parsing.c +++ b/third_party/cgit/parsing.c @@ -72,7 +72,7 @@ static void parse_user(const char *t, char **name, char **email, unsigned long * struct ident_split ident; unsigned email_len; - if (!split_ident_line(&ident, t, strchrnul(t, '\n') - t)) { + if (!split_ident_line(&ident, t, (uintptr_t)strchrnul(t, '\n') - (uintptr_t)t)) { *name = substr(ident.name_begin, ident.name_end); email_len = ident.mail_end - ident.mail_begin; |