diff --git a/src/dungeon.c b/src/dungeon.c index d473e1c2e..27b748104 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 dungeon.c $NHDT-Date: 1558853012 2019/05/26 06:43:32 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.94 $ */ +/* NetHack 3.6 dungeon.c $NHDT-Date: 1559476918 2019/06/02 12:01:58 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.95 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2012. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1190,6 +1190,13 @@ void u_on_newpos(x, y) int x, y; { + if (!isok(x, y)) { /* validate location */ + void VDECL((*func), (const char *, ...)) PRINTF_F(1, 2); + + func = (x < 0 || y < 0 || x > COLNO - 1 || y > ROWNO - 1) ? panic + : impossible; + (*func)("u_on_newpos: trying to place hero off map <%d,%d>", x, y); + } u.ux = x; u.uy = y; #ifdef CLIPPING diff --git a/src/mkobj.c b/src/mkobj.c index 94370c96d..4b64a3f44 100644 --- a/src/mkobj.c +++ b/src/mkobj.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 mkobj.c $NHDT-Date: 1558124913 2019/05/17 20:28:33 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.147 $ */ +/* NetHack 3.6 mkobj.c $NHDT-Date: 1559476922 2019/06/02 12:02:02 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.149 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Derek S. Ray, 2015. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1723,8 +1723,17 @@ int x, y; { register struct obj *otmp2 = level.objects[x][y]; + if (!isok(x, y)) { /* validate location */ + void VDECL((*func), (const char *, ...)) PRINTF_F(1, 2); + + func = (x < 0 || y < 0 || x > COLNO - 1 || y > ROWNO - 1) ? panic + : impossible; + (*func)("place_object: \"%s\" [%d] off map <%d,%d>", + safe_typename(otmp->otyp), otmp->where, x, y); + } if (otmp->where != OBJ_FREE) - panic("place_object: obj not free"); + panic("place_object: obj \"%s\" [%d] not free", + safe_typename(otmp->otyp), otmp->where); obj_no_longer_held(otmp); if (otmp->otyp == BOULDER) {