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) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Alex Smith, 2017. */
|
/*-Copyright (c) Alex Smith, 2017. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -301,7 +301,7 @@ makerooms(void)
|
|||||||
|
|
||||||
/* make rooms until satisfied */
|
/* make rooms until satisfied */
|
||||||
/* rnd_rect() will returns 0 if no more rects are available... */
|
/* 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) {
|
if (gn.nroom >= (MAXNROFROOMS / 6) && rn2(2) && !tried_vault) {
|
||||||
tried_vault = TRUE;
|
tried_vault = TRUE;
|
||||||
if (create_vault()) {
|
if (create_vault()) {
|
||||||
@@ -1114,8 +1114,10 @@ makelevel(void)
|
|||||||
if (Is_rogue_level(&u.uz)) {
|
if (Is_rogue_level(&u.uz)) {
|
||||||
makeroguerooms();
|
makeroguerooms();
|
||||||
makerogueghost();
|
makerogueghost();
|
||||||
} else
|
} else {
|
||||||
makerooms();
|
makerooms();
|
||||||
|
}
|
||||||
|
assert(gn.nroom > 0);
|
||||||
sort_rooms();
|
sort_rooms();
|
||||||
|
|
||||||
generate_stairs(); /* up and down stairs */
|
generate_stairs(); /* up and down stairs */
|
||||||
@@ -1995,10 +1997,17 @@ generate_stairs_find_room(void)
|
|||||||
static void
|
static void
|
||||||
generate_stairs(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;
|
coord pos;
|
||||||
|
|
||||||
if (!Is_botlevel(&u.uz)) {
|
if (!Is_botlevel(&u.uz)) {
|
||||||
|
if ((croom = generate_stairs_find_room()) == NULL)
|
||||||
|
panic(gen_stairs_panic, gn.nroom);
|
||||||
|
|
||||||
if (!somexyspace(croom, &pos)) {
|
if (!somexyspace(croom, &pos)) {
|
||||||
pos.x = somex(croom);
|
pos.x = somex(croom);
|
||||||
pos.y = somey(croom);
|
pos.y = somey(croom);
|
||||||
@@ -2006,10 +2015,12 @@ generate_stairs(void)
|
|||||||
mkstairs(pos.x, pos.y, 0, croom, FALSE); /* down */
|
mkstairs(pos.x, pos.y, 0, croom, FALSE); /* down */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gn.nroom > 1)
|
|
||||||
croom = generate_stairs_find_room();
|
|
||||||
|
|
||||||
if (u.uz.dlevel != 1) {
|
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)) {
|
if (!somexyspace(croom, &pos)) {
|
||||||
pos.x = somex(croom);
|
pos.x = somex(croom);
|
||||||
pos.y = somey(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 */
|
/* Copyright (c) 1990 by Jean-Christophe Collet */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@ get_rect(NhRect* r)
|
|||||||
NhRect *
|
NhRect *
|
||||||
rnd_rect(void)
|
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