From 2343f553de8e127eb8540c5044d355dc5fb490cd Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Mon, 31 Oct 2022 21:27:32 +0300 Subject: Fix negative heap size values reported in WARN Issue #496 (bdwgc). WARN_PRIuPTR is now used to print unsigned values in WARN() calls. Also, byte values are replaced with KiB ones in some WARN() calls. * allchblk.c (GC_allochblk_nth): Use WARN_PRIuPTR specifier instead of WARN_PRIdPTR. * alloc.c (GC_expand_hp_inner, GC_collect_or_expand): Likewise. * headers.c (GC_scratch_alloc): Likewise. * mark.c (alloc_mark_stack): Likewise. * misc.c (GC_enable): Likewise. * os_dep.c [NEED_PROC_MAPS] (GC_get_maps): Likewise. * os_dep.c [PROC_VDB] (GC_proc_read_dirty): Likewise. * win32_threads.c (GC_delete_thread): Likewise. * allchblk.c (GC_allochblk_nth): Print KiB value instead of in bytes in WARN message. * alloc.c (GC_expand_hp_inner): Likewise. * misc.c (GC_enable): Likewise. * alloc.c (GC_expand_hp_inner): Remove unneeded cast of bytes to word. * headers.c (GC_scratch_alloc): Likewise. * alloc.c [(!AMIGA || !GC_AMIGA_FASTALLOC) && USE_MUNMAP] (GC_collect_or_expand): Add assertion to indicate that there is no underflow in GC_heapsize-GC_unmapped_bytes. * include/private/gc_priv.h (WARN): Update comment. * include/private/gc_priv.h [!WARN_PRIdPTR] (WARN_PRIuPTR): Define. --- os_dep.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'os_dep.c') diff --git a/os_dep.c b/os_dep.c index b56d9531..43f8c2df 100644 --- a/os_dep.c +++ b/os_dep.c @@ -249,7 +249,7 @@ GC_INNER const char * GC_get_maps(void) if (maps_size > old_maps_size) { /* This might be caused by e.g. thread creation. */ WARN("Unexpected asynchronous /proc/self/maps growth" - " (to %" WARN_PRIdPTR " bytes)\n", maps_size); + " (to %" WARN_PRIuPTR " bytes)\n", maps_size); } # endif } while (maps_size >= maps_buf_sz @@ -3703,8 +3703,8 @@ GC_INLINE void GC_proc_read_dirty(GC_bool output_unneeded) size_t new_size = 2 * GC_proc_buf_size; char *new_buf; - WARN("/proc read failed: GC_proc_buf_size= %" WARN_PRIdPTR "\n", - (signed_word)GC_proc_buf_size); + WARN("/proc read failed: GC_proc_buf_size= %" WARN_PRIuPTR "\n", + GC_proc_buf_size); new_buf = GC_scratch_alloc(new_size); if (new_buf != 0) { GC_scratch_recycle_no_gww(bufp, GC_proc_buf_size); -- cgit v1.2.1