From 22980d81712c2639c4c477aae0e4196e44038e71 Mon Sep 17 00:00:00 2001 From: PatR Date: Sat, 16 Nov 2019 18:31:30 -0800 Subject: [PATCH] gas cloud fix remove_region() calls newsym() when removing gas clouds, but when newsym() checked whether it was updating a gas cloud location it always got a false 'yes' because the region hadn't been removed yet. Fixing this didn't seem to make any observable difference so it must be followed fairly rapidly by a full vision recalc. --- src/region.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/region.c b/src/region.c index 9422de20c..fae8883ff 100644 --- a/src/region.c +++ b/src/region.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 region.c $NHDT-Date: 1573933605 2019/11/16 19:46:45 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.44 $ */ +/* NetHack 3.6 region.c $NHDT-Date: 1573957877 2019/11/17 02:31:17 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.45 $ */ /* Copyright (c) 1996 by Jean-Christophe Collet */ /* NetHack may be freely redistributed. See license for details. */ @@ -340,6 +340,11 @@ NhRegion *reg; if (i == n_regions) return; + /* remove region before potential newsym() calls, but don't free it yet */ + if (--n_regions != i) + regions[i] = regions[n_regions]; + regions[n_regions] = (NhRegion *) 0; + /* Update screen if necessary */ reg->ttl = -2L; /* for visible_region_at */ if (reg->visible) @@ -349,9 +354,6 @@ NhRegion *reg; newsym(x, y); free_region(reg); - regions[i] = regions[n_regions - 1]; - regions[n_regions - 1] = (NhRegion *) 0; - n_regions--; } /*