fmt_ptr (trunk only)

fmt_ptr() is no longer dependant on WIZARD or MONITOR_HEAP,
so that it can be used in panic messages.
This commit is contained in:
nethack.allison
2006-07-02 18:43:35 +00:00
parent 13eeae9523
commit 3d164b6d02
6 changed files with 23 additions and 28 deletions

View File

@@ -190,11 +190,21 @@
#endif /* NHSTDC */
#ifndef genericptr_t
typedef genericptr genericptr_t; /* (void *) or (char *) */
#endif
#if defined(MICRO) || defined(WIN32)
/* we actually want to know which systems have an ANSI run-time library
* to know which support the new %p format for printing pointers.
* due to the presence of things like gcc, NHSTDC is not a good test.
* so we assume microcomputers have all converted to ANSI and bigger
* computers which may have older libraries give reasonable results with
* the cast.
*/
# define HAS_PTR_FMT
#endif
#define FMT_PTR_BUFSIZ 20 /* buffer size for ptr address as text */
/*
* According to ANSI, prototypes for old-style declarations must widen the

View File

@@ -53,21 +53,7 @@ register unsigned int lth;
#endif
}
#if defined(MONITOR_HEAP) || defined(WIZARD)
# if defined(MICRO) || defined(WIN32)
/* we actually want to know which systems have an ANSI run-time library
* to know which support the new %p format for printing pointers.
* due to the presence of things like gcc, NHSTDC is not a good test.
* so we assume microcomputers have all converted to ANSI and bigger
* computers which may have older libraries give reasonable results with
* the cast.
*/
# define MONITOR_PTR_FMT
# endif
# ifdef MONITOR_PTR_FMT
# ifdef HAS_PTR_FMT
# define PTR_FMT "%p"
# define PTR_TYP genericptr_t
# else
@@ -85,8 +71,6 @@ char *buf;
return buf;
}
#endif
#ifdef MONITOR_HEAP
/* If ${NH_HEAPLOG} is defined and we can create a file by that name,
@@ -108,7 +92,7 @@ const char *file;
int line;
{
long *ptr = alloc(lth);
char ptr_address[20];
char ptr_address[FMT_PTR_BUFSIZ];
if (!tried_heaplog) heapmon_init();
if (heaplog)
@@ -128,7 +112,7 @@ genericptr_t ptr;
const char *file;
int line;
{
char ptr_address[20];
char ptr_address[FMT_PTR_BUFSIZ];
if (!tried_heaplog) heapmon_init();
if (heaplog)

View File

@@ -582,7 +582,7 @@ int
wiz_light_sources()
{
winid win;
char buf[BUFSZ], arg_address[20];
char buf[BUFSZ], arg_address[FMT_PTR_BUFSIZ];
light_source *ls;
win = create_nhwindow(NHW_MENU); /* corner text window */

View File

@@ -1840,7 +1840,8 @@ obj_sanity_check()
struct obj *obj;
struct monst *mon;
const char *mesg;
char obj_address[20], mon_address[20]; /* room for formatted pointers */
char obj_address[FMT_PTR_BUFSIZ],
mon_address[FMT_PTR_BUFSIZ]; /* room for formatted pointers */
mesg = "fobj sanity";
for (obj = fobj; obj; obj = obj->nobj) {
@@ -1948,7 +1949,7 @@ check_contained(container, mesg)
const char *mesg;
{
struct obj *obj;
char obj1_address[20], obj2_address[20];
char obj1_address[FMT_PTR_BUFSIZ], obj2_address[FMT_PTR_BUFSIZ];
for (obj = container->cobj; obj; obj = obj->nobj) {
if (obj->where != OBJ_CONTAINED)

View File

@@ -482,9 +482,9 @@ monsndx(ptr) /* return an index into the mons array */
i = (int)(ptr - &mons[0]);
if (i < LOW_PM || i >= NUMMONS) {
/* ought to switch this to use `fmt_ptr' */
panic("monsndx - could not index monster (%lx)",
(unsigned long)ptr);
char ptr_address[FMT_PTR_BUFSIZ];
panic("monsndx - could not index monster (%s)",
fmt_ptr((genericptr_t)ptr, ptr_address));
return NON_PM; /* will not get here */
}

View File

@@ -1368,7 +1368,7 @@ print_queue(win, base)
timer_element *base;
{
timer_element *curr;
char buf[BUFSZ], arg_address[20];
char buf[BUFSZ], arg_address[FMT_PTR_BUFSIZ];
if (!base) {
putstr(win, 0, "<empty>");
@@ -1417,7 +1417,7 @@ void
timer_sanity_check()
{
timer_element *curr;
char obj_address[20];
char obj_address[FMT_PTR_BUFSIZ];
/* this should be much more complete */
for (curr = timer_base; curr; curr = curr->next)