From 4aebf7cc9ce07dfb20db217274a45680b3cb00ed Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Tue, 3 Jun 2025 21:25:11 +0100 Subject: Fix features continuing to init when preinit fails I think this might actually be the last of the gluegen regressions now, for real, maybe, perhaps. --- src/build/gluegen.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/build/gluegen.c b/src/build/gluegen.c index 905706c..bc973fb 100644 --- a/src/build/gluegen.c +++ b/src/build/gluegen.c @@ -752,13 +752,13 @@ _( "static inline void initfeatures() {") for (int i = 0; i < nfeatures; ++i) { // N.B.: this *should* be 0-indexed! const char *else_ = ""; s16 mod = feat_initorder[i]; +F( " s8 status_%.*s;", mod_names[mod].len, mod_names[mod].s) if (mod_flags[mod] & HAS_PREINIT) { -F( " s8 status_%.*s = feats.preinit_%.*s;", +F( " if (feats.preinit_%.*s != FEAT_OK) status_%.*s = feats.preinit_%.*s;", + mod_names[mod].len, mod_names[mod].s, mod_names[mod].len, mod_names[mod].s, mod_names[mod].len, mod_names[mod].s) - } - else { -F( " s8 status_%.*s;", mod_names[mod].len, mod_names[mod].s) + else_ = "else "; } if (mod_gamespecific[mod].s) { F( " %sif (!GAMETYPE_MATCHES(%.*s)) status_%.*s = FEAT_SKIP;", else_, -- cgit v1.2.3-54-g00ecf