From: Beat Bolli <dev+git@drbeat.li>
To: git@vger.kernel.org
Cc: gitster@pobox.com, Beat Bolli <dev+git@drbeat.li>
Subject: [PATCH 0/6] Compile cleanly in pedantic mode
Date: Mon, 9 Jul 2018 21:25:31 +0200 [thread overview]
Message-ID: <20180709192537.18564-1-dev+git@drbeat.li> (raw)
In-Reply-To: <20180708144342.11922-1-dev+git@drbeat.li>
While developing 6aaded550 ("builtin/config: work around an unsized
array forward declaration", 2018-07-05), I have compiled Git with
CFLAGS="-std=c99 -pedantic".
This series fixes a few compiler warnings when compiling with these
options.
Note that all warnings were produced by -pedantic; the C99 standard
option by itself didn't cause any of them.
The warnings were:
1) Char arrays initialized from a parenthesized string.
Suppressed by defining USE_PARENS_AROUND_GETTEXT_N to 0
globally. This was done just to keep the amount of warnings
manageable; this series leaves that knob alone. The advantage of
not mistakenly concatenating two translated strings is greater.
2) connect.h, refs/refs-internal.h: Forward reference to an enum.
Added two #includes that define the enums. This was already
(inconclusively) talked about in [0].
3) convert.c: Invalid escape sequence "\e".
Replaced with "\033".
4) sequencer.c: Empty statements at top level.
Removed the extra semicolons.
5) string-list.c: Forbidden to cast from void * to a function pointer and
vice versa.
Encapsulated the function pointer in a context struct. This is
controversial because it has a performance impact, namely one
additional pointer dereference per string comparison. An
alternative might be to use multiple casts via intptr_t. But
I'm not sure if this is worth the trouble.
6) utf8.c: overflow of char values.
Used proper char literals for the BOM constants.
This series has patches for 2) to 6).
Regards,
Beat
[0] https://public-inbox.org/git/53ab8626-f862-a732-b369-abeab69a468f@ramsayjones.plus.com/T/
Beat Bolli (6):
connect.h: avoid forward declaration of an enum
refs/refs-internal.h: avoid forward declaration of an enum
convert.c: replace "\e" escapes with "\033".
sequencer.c: avoid empty statements at top level
string-list.c: avoid conversion from void * to function pointer
utf8.c: avoid char overflow
connect.h | 2 ++
convert.c | 2 +-
path.h | 2 +-
refs/refs-internal.h | 2 ++
sequencer.c | 4 ++--
string-list.c | 18 ++++++++++++++----
utf8.c | 8 ++++----
7 files changed, 26 insertions(+), 12 deletions(-)
Interdiff from the RFC series:
diff --git a/path.h b/path.h
index 1ccd0373c9..fc9d3487a0 100644
--- a/path.h
+++ b/path.h
@@ -147,7 +147,7 @@ extern void report_linked_checkout_garbage(void);
/*
* You can define a static memoized git path like:
*
- * static GIT_PATH_FUNC(git_path_foo, "FOO");
+ * static GIT_PATH_FUNC(git_path_foo, "FOO")
*
* or use one of the global ones below.
*/
diff --git a/utf8.c b/utf8.c
index 833ce00617..982217eec9 100644
--- a/utf8.c
+++ b/utf8.c
@@ -561,15 +561,15 @@ char *reencode_string_len(const char *in, int insz,
#endif
static int has_bom_prefix(const char *data, size_t len,
- const unsigned char *bom, size_t bom_len)
+ const char *bom, size_t bom_len)
{
return data && bom && (len >= bom_len) && !memcmp(data, bom, bom_len);
}
-static const unsigned char utf16_be_bom[] = {0xFE, 0xFF};
-static const unsigned char utf16_le_bom[] = {0xFF, 0xFE};
-static const unsigned char utf32_be_bom[] = {0x00, 0x00, 0xFE, 0xFF};
-static const unsigned char utf32_le_bom[] = {0xFF, 0xFE, 0x00, 0x00};
+static const char utf16_be_bom[] = {'\xFE', '\xFF'};
+static const char utf16_le_bom[] = {'\xFF', '\xFE'};
+static const char utf32_be_bom[] = {'\0', '\0', '\xFE', '\xFF'};
+static const char utf32_le_bom[] = {'\xFF', '\xFE', '\0', '\0'};
int has_prohibited_utf_bom(const char *enc, const char *data, size_t len)
{
--
2.18.0.203.gfac676dfb9
next prev parent reply other threads:[~2018-07-09 19:25 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-08 14:43 [RFC PATCH 0/6] Compile cleanly in pedantic mode Beat Bolli
2018-07-08 14:43 ` [RFC PATCH 1/6] connect.h: avoid forward declaration of an enum Beat Bolli
2018-07-08 14:43 ` [RFC PATCH 2/6] refs/refs-internal.h: " Beat Bolli
2018-07-09 18:46 ` Jeff King
2018-07-09 19:30 ` Beat Bolli
2018-07-10 2:15 ` Jeff King
2018-07-08 14:43 ` [RFC PATCH 3/6] convert.c: replace "\e" escapes with "\033" Beat Bolli
2018-07-08 14:43 ` [RFC PATCH 4/6] sequencer.c: avoid empty statements at top level Beat Bolli
2018-07-08 20:54 ` Eric Sunshine
2018-07-08 21:17 ` Philip Oakley
2018-07-09 9:37 ` ig
2018-07-09 21:34 ` Junio C Hamano
2018-07-09 21:37 ` Beat Bolli
2018-07-08 14:43 ` [RFC PATCH 5/6] string-list.c: avoid conversion from void * to function pointer Beat Bolli
2018-07-08 14:43 ` [RFC PATCH 6/6] utf8.c: avoid char overflow Beat Bolli
2018-07-09 13:14 ` Johannes Schindelin
2018-07-09 14:48 ` Beat Bolli
2018-07-09 15:45 ` Beat Bolli
2018-07-09 16:33 ` Junio C Hamano
2018-07-09 17:56 ` Beat Bolli
2018-07-09 18:18 ` Junio C Hamano
2018-07-09 20:04 ` Johannes Schindelin
2018-07-09 13:40 ` [RFC PATCH 0/6] Compile cleanly in pedantic mode Johannes Schindelin
2018-07-09 16:25 ` Junio C Hamano
2018-07-09 19:25 ` Beat Bolli [this message]
2018-07-09 20:25 ` [PATCH " Beat Bolli
2018-07-09 21:45 ` Junio C Hamano
2018-07-09 21:47 ` Beat Bolli
2018-07-10 7:34 ` Beat Bolli
2018-07-11 15:42 ` Junio C Hamano
2018-07-12 13:25 ` Johannes Schindelin
2018-07-12 15:40 ` Junio C Hamano
2018-07-09 19:25 ` [PATCH 1/6] connect.h: avoid forward declaration of an enum Beat Bolli
2018-07-09 19:25 ` [PATCH 2/6] refs/refs-internal.h: " Beat Bolli
2018-07-09 19:25 ` [PATCH 3/6] convert.c: replace "\e" escapes with "\033" Beat Bolli
2018-07-09 19:25 ` [PATCH 4/6] sequencer.c: avoid empty statements at top level Beat Bolli
2018-07-09 21:37 ` Junio C Hamano
2018-07-09 19:25 ` [PATCH 5/6] string-list.c: avoid conversion from void * to function pointer Beat Bolli
2018-07-09 19:25 ` [PATCH 6/6] utf8.c: avoid char overflow Beat Bolli
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180709192537.18564-1-dev+git@drbeat.li \
--to=dev+git@drbeat.li \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.