summaryrefslogtreecommitdiff
path: root/kwset.c
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2019-06-13 04:49:45 -0700
committerJunio C Hamano <gitster@pobox.com>2019-06-13 09:34:16 -0700
commit08e0450690b8f4aa0f51d8c096520817f96de3dd (patch)
treeb799fe103ad64441ef19355663ef772d42bbdfeb /kwset.c
parent8d4679fe0995affd40301169fbfe6d679561bc64 (diff)
downloadgit-08e0450690b8f4aa0f51d8c096520817f96de3dd.tar.gz
kwset: allow building with GCC 8
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'kwset.c')
-rw-r--r--kwset.c8
1 files changed, 7 insertions, 1 deletions
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))