diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2012-08-23 19:19:26 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2012-08-23 19:19:26 +0000 |
commit | 13b8a25456f038e0dbf7daf187cb0e5b9b9558c9 (patch) | |
tree | fb430d471ec8aa5804ba2b751366cff6c9529711 /Src | |
parent | 32438824c0f92d64956c35a543ead4687f029ddb (diff) | |
download | zsh-13b8a25456f038e0dbf7daf187cb0e5b9b9558c9.tar.gz zsh-13b8a25456f038e0dbf7daf187cb0e5b9b9558c9.tar.xz zsh-13b8a25456f038e0dbf7daf187cb0e5b9b9558c9.zip |
Jun T.: 30640: MacOS doesn't define __STDC_ISO_10646__ but we need
the replacement wcwidth function anyway
Diffstat (limited to 'Src')
-rw-r--r-- | Src/compat.c | 4 | ||||
-rw-r--r-- | Src/zsh.h | 9 |
2 files changed, 10 insertions, 3 deletions
diff --git a/Src/compat.c b/Src/compat.c index 6d08dab94..cc4e876da 100644 --- a/Src/compat.c +++ b/Src/compat.c @@ -630,7 +630,7 @@ strtoul(nptr, endptr, base) #endif /* HAVE_STRTOUL */ /**/ -#if defined(BROKEN_WCWIDTH) && defined(__STDC_ISO_10646__) +#if defined(BROKEN_WCWIDTH) && (defined(__STDC_ISO_10646__) || defined(__APPLE__)) /* * This is an implementation of wcwidth() and wcswidth() (defined in @@ -949,5 +949,5 @@ int mk_wcswidth_cjk(const wchar_t *pwcs, size_t n) #endif /* 0 */ /**/ -#endif /* BROKEN_WCWIDTH && __STDC_ISO_10646__ */ +#endif /* BROKEN_WCWIDTH && (__STDC_ISO_10646__ || __APPLE__) */ diff --git a/Src/zsh.h b/Src/zsh.h index b9f2846f7..e20838249 100644 --- a/Src/zsh.h +++ b/Src/zsh.h @@ -2681,7 +2681,14 @@ typedef wint_t convchar_t; #define MB_METASTRWIDTH(str) mb_metastrlen(str, 1) #define MB_METASTRLEN2(str, widthp) mb_metastrlen(str, widthp) -#if defined(BROKEN_WCWIDTH) && defined(__STDC_ISO_10646__) +/* + * We replace broken implementations with one that uses Unicode + * characters directly as wide characters. In principle this is only + * likely to work if __STDC_ISO_10646__ is defined, since that's pretty + * much what the definition tells us. However, we happen to know this + * works on MacOS which doesn't define that. + */ +#if defined(BROKEN_WCWIDTH) && (defined(__STDC_ISO_10646__) || defined(__APPLE__)) #define WCWIDTH(wc) mk_wcwidth(wc) #else #define WCWIDTH(wc) wcwidth(wc) |