gperf: fix build with clang 16

Clang 16 defaults to C++17, which does not allow the `register` storage
class specifier. This is fixed upstream, but the change doesn’t apply
cleanly to the 3.1 release. Fortunately, the fix is trivial (remove the
disallowed keyword).
This commit is contained in:
Randy Eckenrode
2023-05-31 00:18:02 -04:00
parent 5611fa71ab
commit 58f559cdb0
2 changed files with 18 additions and 0 deletions
@@ -9,6 +9,11 @@ stdenv.mkDerivation rec {
sha256 = "1qispg6i508rq8pkajh26cznwimbnj06wq9sd85vg95v8nwld1aq";
};
patches = [
# Clang 16 defaults to C++17, which does not allow `register` as a storage class specifier.
./gperf-c++17-register-fix.patch
];
enableParallelBuilding = true;
meta = {
@@ -0,0 +1,13 @@
diff --git a/lib/getline.cc b/lib/getline.cc
index c57c633..0984a7c 100644
--- a/lib/getline.cc
+++ b/lib/getline.cc
@@ -55,7 +55,7 @@ getstr (char **lineptr, size_t *n, FILE *stream, char terminator, size_t offset)
for (;;)
{
- register int c = getc (stream);
+ int c = getc (stream);
/* We always want at least one char left in the buffer, since we
always (unless we get an error while reading the first char)