rewrite fallthrough to HEIM_FALLTHROUGH to deal with new Apple SDKs

Apple clang version 14.0.0 (clang-1400.0.17.3.1) fails the build
because stds.h defines `fallthrough` as a macro which is then
expanded when base.h evaluates

  # if __has_attribute(fallthrough) && __clang_major__ >= 5

The macOS SDK defines `DISPATCH_FALLTHROUGH` as the macro instead
of `fallthrough`.

This change replaces the use of `fallthrough` in the tree with
`HEIM_FALLTHROUGH` and updates the declaration in configure logic
to define `HEIM_FALLTHROUGH` based upon existing definitions
(if any) of `fallthrough` or `DISPATCH_FALLTHROUGH`.
This commit is contained in:
Daria Phoebe Brashear
2022-09-16 09:57:24 -04:00
committed by Jeffrey Altman
parent f6d26bce66
commit 133f517482
21 changed files with 48 additions and 44 deletions

View File

@@ -205,18 +205,18 @@ wind_ucs4utf8(const uint32_t *in, size_t in_len, char *out, size_t *out_len)
case 4:
out[3] = (ch | 0x80) & 0xbf;
ch = ch >> 6;
fallthrough;
HEIM_FALLTHROUGH;
case 3:
out[2] = (ch | 0x80) & 0xbf;
ch = ch >> 6;
fallthrough;
HEIM_FALLTHROUGH;
case 2:
out[1] = (ch | 0x80) & 0xbf;
ch = ch >> 6;
fallthrough;
HEIM_FALLTHROUGH;
case 1:
out[0] = ch | first_char[len - 1];
fallthrough;
HEIM_FALLTHROUGH;
default:
break;
}
@@ -486,14 +486,14 @@ wind_ucs2utf8(const uint16_t *in, size_t in_len, char *out, size_t *out_len)
case 3:
out[2] = (ch | 0x80) & 0xbf;
ch = ch >> 6;
fallthrough;
HEIM_FALLTHROUGH;
case 2:
out[1] = (ch | 0x80) & 0xbf;
ch = ch >> 6;
fallthrough;
HEIM_FALLTHROUGH;
case 1:
out[0] = ch | first_char[len - 1];
fallthrough;
HEIM_FALLTHROUGH;
default:
break;
}