[PATCH 2/4] kwset: allow building with GCC 8
- From
Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Jun 13, 2019, 11:49 UTC
- Message-ID
- <c1527a71672056859a4613f2318bcbfce31e8b50.1560426581.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.265.git.gitgitgadget@gmail.com>
From: Johannes Schindelin <johannes.schindelin@gmx.de>
The kwset functionality makes use of the obstack code, which expects to be handed a function that can allocate large chunks of data. It expects that function to accept a `size` parameter of type `long`.
This upsets GCC 8 on Windows, because `long` does not have the same bit size as `size_t` there.
Now, the proper thing to do would be to switch to `size_t`. But this would make us deviate from the "upstream" code even further, making it hard to synchronize with newer versions, and also it would be quite involved because that `long` type is so invasive in that code.
Let's punt, and instead provide a super small wrapper around `xmalloc()`.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> --- kwset.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/kwset.c b/kwset.c index 4fb6455aca..efc2ff41bc 100644 --- a/kwset.c +++ b/kwset.c @@ -38,7 +38,13 @@ #include "compat/obstack.h" #define NCHAR (UCHAR_MAX + 1) -#define obstack_chunk_alloc xmalloc +/* adapter for `xmalloc()`, which takes `size_t`, not `long` */ +static void *obstack_chunk_alloc(long size) +{ + if (size < 0) + BUG("Cannot allocate a negative amount: %ld", size); + return xmalloc(size); +} #define obstack_chunk_free free #define U(c) ((unsigned char) (c))
-- gitgitgadget