From 244cfa95382fecfd9b42cae2ba30fd19ac9f2414 Mon Sep 17 00:00:00 2001 From: GenericHeroGuy Date: Sun, 23 Feb 2025 16:47:59 +0100 Subject: [PATCH] Imagine relying on C23 features --- src/CMakeLists.txt | 1 + src/info.c | 6 +++--- src/lua_mobjlib.c | 14 +++++++++++++- src/r_skins.c | 4 ++-- src/sounds.c | 2 ++ 5 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 83b175305..659a2fd31 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -308,6 +308,7 @@ target_compile_options(SRB2SDL2 PRIVATE $<$,9.1.0>: -Wno-error=address-of-packed-member + -Wc11-c2x-compat > > diff --git a/src/info.c b/src/info.c index 4982dc6e4..0a1e1bd33 100644 --- a/src/info.c +++ b/src/info.c @@ -83,11 +83,11 @@ playersprite_t spr2defaults[NUMPLAYERSPRITES] = { }; // Doesn't work with g++, needs actionf_p1 (don't modify this comment) -state_t states[NUMSTATES] = {}; +state_t states[NUMSTATES] = {0}; -mobjinfo_t mobjinfo[NUMMOBJTYPES] = {}; +mobjinfo_t mobjinfo[NUMMOBJTYPES] = {0}; -skincolor_t skincolors[MAXSKINCOLORS] = {}; +skincolor_t skincolors[MAXSKINCOLORS] = {0}; /** Patches the mobjinfo, state, and skincolor tables. * Free slots are emptied out and set to initial values. diff --git a/src/lua_mobjlib.c b/src/lua_mobjlib.c index d86e3be04..78d511402 100644 --- a/src/lua_mobjlib.c +++ b/src/lua_mobjlib.c @@ -294,12 +294,14 @@ static int mobj_get(lua_State *L) lua_pushinteger(L, mo->sprite); break; case mobj_frame: + { UINT32 frame = mo->frame; // translate SPR2 back to frames if (lua_compatmode && mo->sprite == SPR_PLAY) frame = (frame & ~FF_FRAMEMASK) | spr2frame(mo->sprite2, mo->frame); lua_pushinteger(L, frame); break; + } case mobj_sprite2: lua_pushinteger(L, mo->sprite2); break; @@ -369,17 +371,21 @@ static int mobj_get(lua_State *L) lua_pushinteger(L, mo->flags); break; case mobj_flags2: + { UINT32 flags2 = mo->flags2; if (lua_compatmode && (mo->renderflags & RF_DONTDRAW) == RF_DONTDRAW) flags2 |= MF2_DONTDRAW; lua_pushinteger(L, flags2); break; + } case mobj_eflags: - UINT32 eflags = mo->eflags; + { + UINT32 eflags = mo->eflags; // yes, not UINT16 if (lua_compatmode) eflags |= (~mo->renderflags & RF_DONTDRAW); lua_pushinteger(L, eflags); break; + } case mobj_renderflags: lua_pushinteger(L, mo->renderflags); break; @@ -677,11 +683,13 @@ static int mobj_set(lua_State *L) mo->rollangle = luaL_checkangle(L, 3); break; case mobj_sprite: + { spritenum_t newsprite = luaL_checkinteger(L, 3); if (lua_compatmode && mo->sprite != SPR_PLAY && newsprite == SPR_PLAY) frame2spr2(mo, mo->frame); mo->sprite = newsprite; break; + } case mobj_frame: // Check for SPR2 if (lua_compatmode && mo->sprite == SPR_PLAY) @@ -795,6 +803,7 @@ static int mobj_set(lua_State *L) break; } case mobj_flags2: + { UINT32 flags2 = luaL_checkinteger(L, 3); if (lua_compatmode) { @@ -805,12 +814,15 @@ static int mobj_set(lua_State *L) } mo->flags2 = flags2; break; + } case mobj_eflags: + { UINT32 eflags = luaL_checkinteger(L, 3); if (lua_compatmode) mo->renderflags = (mo->renderflags & ~RF_DONTDRAW) | (~eflags & RF_DONTDRAW); // eeeyup. mo->eflags = (UINT16)eflags; break; + } case mobj_renderflags: mo->renderflags = (UINT32)luaL_checkinteger(L, 3); break; diff --git a/src/r_skins.c b/src/r_skins.c index 96a21e9bc..cb0a9b12e 100644 --- a/src/r_skins.c +++ b/src/r_skins.c @@ -473,7 +473,7 @@ static void R_LoadSkinSprites(UINT16 wadnum, UINT16 *lump, UINT16 *lastlump, ski size_t i; spritedef_t *sd; spriteframe_t *sf; - spritedef_t tmp = {}; + spritedef_t tmp = {0}; const char *sprname = W_CheckNameForNumPwad(wadnum, *lump); R_AddSingleSpriteDef(sprname, &tmp, wadnum, *lump, *lastlump); @@ -557,7 +557,7 @@ static void R_IHateThatHedgehog(UINT16 wadnum) UINT16 lump = W_CheckNumForNamePwad("S_START", wadnum, 0); if (lump == INT16_MAX) I_Error("R_IHateThatHedgehog: could not find the hedgehog"); - R_LoadSkinSprites(wadnum, &lump, &(UINT16){}, skin); + R_LoadSkinSprites(wadnum, &lump, &(UINT16){0}, skin); #ifdef SKINVALUES skin_cons_t[0].value = 0; diff --git a/src/sounds.c b/src/sounds.c index 73766738b..f094ebb91 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -53,6 +53,8 @@ sfxinfo_t S_sfx[NUMSFX] = // skin sounds free slots to add sounds at run time (Boris HACK!!!) // initialized to NULL + + 0 }; static char soundnames[NUMSFX][7] = {