• Simon McVittie's avatar
    glib-init: statically assert that "small" enums are all int-sized · 52276300
    Simon McVittie authored
    ISO C allows compilers to make enums smaller than int if their
    enumerated values would all fit in the range of a smaller type.
    
    In practice, I suspect that in relevant compilers, all enums whose
    values fit in the range INT32_MIN to INT32_MAX (inclusive) are the same
    size as int. ISO C allows compiler to break that assumption, but those
    that do would break code that works fine in other compilers, making the
    compiler look bad, for no significant benefit. I conjecture that such
    compilers are not popular.
    
    Let's statically assert that my assumption holds. If all goes well,
    GLib will continue to compile on every relevant platform; if it
    fails to compile on some platform as a result of this change, then
    there are probably a lot of naive uses of enums that need auditing
    for this assumption.
    
    Bug: https://bugzilla.gnome.org/show_bug.cgi?id=730932Signed-off-by: Simon McVittie's avatarSimon McVittie <simon.mcvittie@collabora.co.uk>
    Reviewed-by: Allison Lortie
    52276300
Name
Last commit
Last update
build Loading commit data...
docs Loading commit data...
gio Loading commit data...
glib Loading commit data...
gmodule Loading commit data...
gobject Loading commit data...
gthread Loading commit data...
m4macros Loading commit data...
po Loading commit data...
tests Loading commit data...
.dir-locals.el Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
COPYING Loading commit data...
ChangeLog.pre-1-2 Loading commit data...
ChangeLog.pre-2-0 Loading commit data...
ChangeLog.pre-2-10 Loading commit data...
ChangeLog.pre-2-12 Loading commit data...
ChangeLog.pre-2-14 Loading commit data...
ChangeLog.pre-2-16 Loading commit data...
ChangeLog.pre-2-18 Loading commit data...
ChangeLog.pre-2-2 Loading commit data...
ChangeLog.pre-2-20 Loading commit data...
ChangeLog.pre-2-4 Loading commit data...
ChangeLog.pre-2-6 Loading commit data...
ChangeLog.pre-2-8 Loading commit data...
HACKING Loading commit data...
INSTALL.in Loading commit data...
Makefile.am Loading commit data...
NEWS Loading commit data...
NEWS.pre-1-3 Loading commit data...
README.commits Loading commit data...
README.in Loading commit data...
README.rationale Loading commit data...
README.win32 Loading commit data...
acglib.m4 Loading commit data...
acinclude.m4 Loading commit data...
autogen.sh Loading commit data...
check-abis.sh Loading commit data...
config.h.win32.in Loading commit data...
configure.ac Loading commit data...
gio-2.0.pc.in Loading commit data...
gio-unix-2.0.pc.in Loading commit data...
gio-windows-2.0.pc.in Loading commit data...
glib-2.0.pc.in Loading commit data...
glib-gettextize.in Loading commit data...
glib-tap.mk Loading commit data...
glib-zip.in Loading commit data...
glib.doap Loading commit data...
glib.mk Loading commit data...
gmodule-2.0.pc.in Loading commit data...
gmodule-export-2.0.pc.in Loading commit data...
gmodule-no-export-2.0.pc.in Loading commit data...
gobject-2.0.pc.in Loading commit data...
gthread-2.0.pc.in Loading commit data...
makefile.msc Loading commit data...
msvc_recommended_pragmas.h Loading commit data...
sanity_check Loading commit data...
tap-driver.sh Loading commit data...
tap-test Loading commit data...
win32-fixup.pl Loading commit data...