]> granicus.if.org Git - nethack/commitdiff
fmt_ptr (trunk only)
authornethack.allison <nethack.allison>
Sun, 2 Jul 2006 18:43:35 +0000 (18:43 +0000)
committernethack.allison <nethack.allison>
Sun, 2 Jul 2006 18:43:35 +0000 (18:43 +0000)
fmt_ptr() is no longer dependant on WIZARD or MONITOR_HEAP,
so that it can be used in panic messages.

include/tradstdc.h
src/alloc.c
src/light.c
src/mkobj.c
src/mondata.c
src/timeout.c

index 90decdb0da564c84e3bcd254307cbdf6ad168bb8..8a8874e43e907d8f51ed4357fab553826a2b763d 100644 (file)
 
 #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
index ecbc047a197562c08c42a79fb4df31c64e774008..fc616f8cf0f7767b765d5c75372d4ef7d5f6cf64 100644 (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)
index 67c1c8140e0f2df70f32f6d387490e072040ac62..6ad3ae2ed09886d79c88b993a96bfe4f1dd4cdab 100644 (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 */
index be3a68b552e3204aacb38ac20f56ecedf6454ac1..74ecd25cbe04ca82b7ee02b5578030775a9fa548 100644 (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)
index 974087aae7a402921600685c5ae87e3815687d95..a453e9349fcbb0396cd3b3ca865013412bdc7be4 100644 (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 */
        }
 
index 60802e2bd34598438aac315382154639e4f10b96..1616e90fbd2c6e81012ab2a13f087d8a8d841575 100644 (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)