From 4e9e58bf6a75a00e323393c07c29828a1a44cc0a Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Tue, 29 Apr 2008 20:38:10 +0200 Subject: [PATCH] Write planes fixed on game start to disk properly When fixing planes stuck in the air, we fixed them only in memory, so when a fixed plane wasn't written to disk for other reasons before the next game start, it had to be fixed again. Change pln_zap_transient_flags() to write them out. --- src/lib/common/ef_verify.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib/common/ef_verify.c b/src/lib/common/ef_verify.c index fb677145f..62c5cab27 100644 --- a/src/lib/common/ef_verify.c +++ b/src/lib/common/ef_verify.c @@ -169,19 +169,24 @@ pln_zap_transient_flags(void) { int i; struct plnstr *pp; + int dirty = 0; /* laziness: assumes plane file is EFF_MEM */ for (i = 0; (pp = getplanep(i)) != NULL; i++) { if (pp->pln_flags & PLN_LAUNCHED && (plchr[pp->pln_type].pl_flags & (P_M | P_O)) != P_O) { pp->pln_flags &= ~PLN_LAUNCHED; - verify_fail(EF_PLANE, i, NULL, 0, "stuck in the air (patched)"); + /* FIXME missile should be destroyed instead */ + dirty = 1; + verify_fail(EF_PLANE, i, NULL, 0, "stuck in the air (fixed)"); /* * Can't putplane() here, because pln_prewrite() crashes * without a valid player. */ } } + if (dirty) + ef_flush(EF_PLANE); /* pretty wasteful */ } int -- 2.43.0