summaryrefslogtreecommitdiff
path: root/base/gsmemory.c
diff options
context:
space:
mode:
authorRobin Watts <Robin.Watts@artifex.com>2020-03-17 00:44:02 +0000
committerRobin Watts <Robin.Watts@artifex.com>2020-03-17 12:18:15 +0000
commit4cbc36fe4546bce70537bc65541f65b4d7259a5b (patch)
tree5238751d4306e19bc4f66920604a47a09e0890ab /base/gsmemory.c
parentd7961033ee224fc5d2c96a16bea3f3399dd29561 (diff)
downloadghostpdl-4cbc36fe4546bce70537bc65541f65b4d7259a5b.tar.gz
Bug 702151: Avoid truncating pointers in debug code.
Introduce a PRI_INTPTR and use that to consistently display pointers. We avoid using %p, as that displays inconsistently between platforms. Sometimes it does 0x%x, sometimes just %x.
Diffstat (limited to 'base/gsmemory.c')
-rw-r--r--base/gsmemory.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/base/gsmemory.c b/base/gsmemory.c
index d84474b9c..8934e4e81 100644
--- a/base/gsmemory.c
+++ b/base/gsmemory.c
@@ -16,6 +16,7 @@
/* Generic allocator support */
#include "memory_.h"
+#include "stdint_.h"
#include "gdebug.h"
#include "gstypes.h"
#include "gsmemory.h"
@@ -106,8 +107,8 @@ gs_resize_struct_array(gs_memory_t *mem, void *obj, size_t num_elements,
return gs_alloc_struct_array(mem, num_elements, void, pstype, cname);
#ifdef DEBUG
if (gs_object_type(mem, obj) != pstype) {
- lprintf3("resize_struct_array 0x%lx, type was 0x%lx, expected 0x%lx!\n",
- (ulong)obj, (ulong)gs_object_type(mem, obj), (ulong)pstype);
+ lprintf3("resize_struct_array "PRI_INTPTR", type was "PRI_INTPTR", expected "PRI_INTPTR"!\n",
+ (intptr_t)obj, (intptr_t)gs_object_type(mem, obj), (intptr_t)pstype);
return 0;
}
#endif
@@ -251,29 +252,29 @@ rc_object_type_name(const void *vp, const rc_header *prc)
void
rc_trace_init_free(const void *vp, const rc_header *prc)
{
- dmprintf3(prc->memory, "[^]%s 0x%lx init = %ld\n",
- rc_object_type_name(vp, prc), (ulong)vp, (long)prc->ref_count);
+ dmprintf3(prc->memory, "[^]%s "PRI_INTPTR" init = %ld\n",
+ rc_object_type_name(vp, prc), (intptr_t)vp, (long)prc->ref_count);
}
void
rc_trace_free_struct(const void *vp, const rc_header *prc, client_name_t cname)
{
- dmprintf3(prc->memory, "[^]%s 0x%lx => free (%s)\n",
+ dmprintf3(prc->memory, "[^]%s "PRI_INTPTR" => free (%s)\n",
rc_object_type_name(vp, prc),
- (ulong)vp, client_name_string(cname));
+ (intptr_t)vp, client_name_string(cname));
}
void
rc_trace_increment(const void *vp, const rc_header *prc)
{
- dmprintf3(prc->memory, "[^]%s 0x%lx ++ => %ld\n",
+ dmprintf3(prc->memory, "[^]%s "PRI_INTPTR" ++ => %ld\n",
rc_object_type_name(vp, prc),
- (ulong)vp, (long)prc->ref_count);
+ (intptr_t)vp, (long)prc->ref_count);
}
void
rc_trace_adjust(const void *vp, const rc_header *prc, int delta, const char *cname)
{
- dmprintf5(prc->memory, "[^]%s 0x%lx %+d => %ld (%s)\n",
+ dmprintf5(prc->memory, "[^]%s "PRI_INTPTR" %+d => %ld (%s)\n",
rc_object_type_name(vp, prc),
- (ulong)vp, delta, (long)(prc->ref_count + delta), cname);
+ (intptr_t)vp, delta, (long)(prc->ref_count + delta), cname);
}
#endif /* DEBUG */
@@ -297,8 +298,8 @@ ENUM_PTRS_BEGIN_PROC(basic_enum_ptrs)
/* with number of elements 0 and allocation not passing 'element' */
if (size == 0) {
#ifdef DEBUG
- dmprintf2(mem, " basic_enum_ptrs: Attempt to enum 0 size structure at 0x%lx, type: %s\n",
- (ulong)vptr, pstype->sname);
+ dmprintf2(mem, " basic_enum_ptrs: Attempt to enum 0 size structure at "PRI_INTPTR", type: %s\n",
+ (intptr_t)vptr, pstype->sname);
#endif
return 0;
}
@@ -309,8 +310,8 @@ ENUM_PTRS_BEGIN_PROC(basic_enum_ptrs)
#ifdef DEBUG
/* some extra checking to make sure we aren't out of bounds */
if (ppe->offset > size - sizeof(void *)) {
- dmprintf4(mem, " basic_enum_ptrs: Attempt to enum ptr with offset=%d beyond size=%d: structure at 0x%lx, type: %s\n",
- ppe->offset, size, (ulong)vptr, pstype->sname);
+ dmprintf4(mem, " basic_enum_ptrs: Attempt to enum ptr with offset=%d beyond size=%d: structure at "PRI_INTPTR", type: %s\n",
+ ppe->offset, size, (intptr_t)vptr, pstype->sname);
return 0;
}
#endif