diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2020-01-11 12:36:01 +0100 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2020-01-12 23:52:37 +0100 |
commit | a16c37b78fff5c4b24328d52bf9b2c7f57db0d12 (patch) | |
tree | 920b8d22318c2ea3addaf2db9aa3118ba6a2b3ac | |
parent | 76c4c5d5581b2cd36a043234eb167dd55041301d (diff) | |
download | qtbase-a16c37b78fff5c4b24328d52bf9b2c7f57db0d12.tar.gz |
Enforce that char16_t / char32_t are 16/32 bits
The standard makes them as big as int_least16_t / 32_t, i.e. big
enough to hold UTF-16 / UTF-32 code units. We're relying on them
to be *exactly* 16/32 bit instead.
Drive by: move the check that a char is 8 bits before saying that
some other type is not its expected sizeof() * 8.
Change-Id: Idbf3d33331667d417702d9dde221905bcfc4d021
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r-- | src/corelib/global/qglobal.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 20046e3fcf..da69628d2b 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -139,10 +139,12 @@ Q_CORE_EXPORT void *qMemSet(void *dest, int c, size_t n); // in. The idea here is to error or warn if otherwise implicit Qt // assumptions are not fulfilled on new hardware or compilers // (if this list becomes too long, consider factoring into a separate file) -Q_STATIC_ASSERT_X(sizeof(int) == 4, "Qt assumes that int is 32 bits"); Q_STATIC_ASSERT_X(UCHAR_MAX == 255, "Qt assumes that char is 8 bits"); +Q_STATIC_ASSERT_X(sizeof(int) == 4, "Qt assumes that int is 32 bits"); Q_STATIC_ASSERT_X(QT_POINTER_SIZE == sizeof(void *), "QT_POINTER_SIZE defined incorrectly"); Q_STATIC_ASSERT_X(sizeof(float) == 4, "Qt assumes that float is 32 bits"); +Q_STATIC_ASSERT_X(sizeof(char16_t) == 2, "Qt assumes that char16_t is 16 bits"); +Q_STATIC_ASSERT_X(sizeof(char32_t) == 4, "Qt assumes that char32_t is 32 bits"); // While we'd like to check for __STDC_IEC_559__, as per ISO/IEC 9899:2011 // Annex F (C11, normative for C++11), there are a few corner cases regarding |