From: nethack.allison Date: Sun, 2 Jul 2006 18:43:35 +0000 (+0000) Subject: fmt_ptr (trunk only) X-Git-Tag: MOVE2GIT~964 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3d164b6d02e6a0a6d2a6fbd594bb7777c5062c92;p=nethack fmt_ptr (trunk only) fmt_ptr() is no longer dependant on WIZARD or MONITOR_HEAP, so that it can be used in panic messages. --- diff --git a/include/tradstdc.h b/include/tradstdc.h index 90decdb0d..8a8874e43 100644 --- a/include/tradstdc.h +++ b/include/tradstdc.h @@ -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 diff --git a/src/alloc.c b/src/alloc.c index ecbc047a1..fc616f8cf 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -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) diff --git a/src/light.c b/src/light.c index 67c1c8140..6ad3ae2ed 100644 --- a/src/light.c +++ b/src/light.c @@ -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 */ diff --git a/src/mkobj.c b/src/mkobj.c index be3a68b55..74ecd25cb 100644 --- a/src/mkobj.c +++ b/src/mkobj.c @@ -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) diff --git a/src/mondata.c b/src/mondata.c index 974087aae..a453e9349 100644 --- a/src/mondata.c +++ b/src/mondata.c @@ -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 */ } diff --git a/src/timeout.c b/src/timeout.c index 60802e2bd..1616e90fb 100644 --- a/src/timeout.c +++ b/src/timeout.c @@ -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, ""); @@ -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)