even more mklev.c
This should eliminate the last analyzer complaint about maybe using a Null pointer. I didn't notice this one yesterday.
This commit is contained in:
25
src/mklev.c
25
src/mklev.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.7 mklev.c $NHDT-Date: 1702023271 2023/12/08 08:14:31 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.163 $ */
|
||||
/* NetHack 3.7 mklev.c $NHDT-Date: 1702839454 2023/12/17 18:57:34 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.169 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/*-Copyright (c) Alex Smith, 2017. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -301,7 +301,7 @@ makerooms(void)
|
||||
|
||||
/* make rooms until satisfied */
|
||||
/* rnd_rect() will returns 0 if no more rects are available... */
|
||||
while (gn.nroom < (MAXNROFROOMS-1) && rnd_rect()) {
|
||||
while (gn.nroom < (MAXNROFROOMS - 1) && rnd_rect()) {
|
||||
if (gn.nroom >= (MAXNROFROOMS / 6) && rn2(2) && !tried_vault) {
|
||||
tried_vault = TRUE;
|
||||
if (create_vault()) {
|
||||
@@ -1114,8 +1114,10 @@ makelevel(void)
|
||||
if (Is_rogue_level(&u.uz)) {
|
||||
makeroguerooms();
|
||||
makerogueghost();
|
||||
} else
|
||||
} else {
|
||||
makerooms();
|
||||
}
|
||||
assert(gn.nroom > 0);
|
||||
sort_rooms();
|
||||
|
||||
generate_stairs(); /* up and down stairs */
|
||||
@@ -1995,10 +1997,17 @@ generate_stairs_find_room(void)
|
||||
static void
|
||||
generate_stairs(void)
|
||||
{
|
||||
struct mkroom *croom = generate_stairs_find_room();
|
||||
/* generate_stairs_find_room() returns Null if nroom == 0, but that
|
||||
should never happen for a rooms+corridors style level */
|
||||
static const char
|
||||
gen_stairs_panic[] = "generate_stairs: failed to find a room! (%d)";
|
||||
struct mkroom *croom;
|
||||
coord pos;
|
||||
|
||||
if (!Is_botlevel(&u.uz)) {
|
||||
if ((croom = generate_stairs_find_room()) == NULL)
|
||||
panic(gen_stairs_panic, gn.nroom);
|
||||
|
||||
if (!somexyspace(croom, &pos)) {
|
||||
pos.x = somex(croom);
|
||||
pos.y = somey(croom);
|
||||
@@ -2006,10 +2015,12 @@ generate_stairs(void)
|
||||
mkstairs(pos.x, pos.y, 0, croom, FALSE); /* down */
|
||||
}
|
||||
|
||||
if (gn.nroom > 1)
|
||||
croom = generate_stairs_find_room();
|
||||
|
||||
if (u.uz.dlevel != 1) {
|
||||
/* if there is only 1 room and we found it above, this will find
|
||||
it again */
|
||||
if ((croom = generate_stairs_find_room()) == NULL)
|
||||
panic(gen_stairs_panic, gn.nroom);
|
||||
|
||||
if (!somexyspace(croom, &pos)) {
|
||||
pos.x = somex(croom);
|
||||
pos.y = somey(croom);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.7 rect.c $NHDT-Date: 1596498203 2020/08/03 23:43:23 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.14 $ */
|
||||
/* NetHack 3.7 rect.c $NHDT-Date: 1702839449 2023/12/17 18:57:29 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.19 $ */
|
||||
/* Copyright (c) 1990 by Jean-Christophe Collet */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -102,7 +102,7 @@ get_rect(NhRect* r)
|
||||
NhRect *
|
||||
rnd_rect(void)
|
||||
{
|
||||
return rect_cnt > 0 ? &rect[rn2(rect_cnt)] : 0;
|
||||
return (rect_cnt > 0) ? &ROLL_FROM(rect) : (NhRect *) NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user