From: Paul Eggert Date: Wed, 22 Jan 2025 06:18:17 +0000 (-0800) Subject: Port pdumper to unlikely long sprintf output X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=2273342371a4703baaf987ea8b27b549c5e5e53e;p=emacs.git Port pdumper to unlikely long sprintf output * src/pdumper.c (dump_ptr_referrer): Port to platforms where sprintf %p generates absurdly long output. (dump_vectorlike): Port to hypothetical platforms where %d generates absurdly long output. (cherry picked from commit 4a25ed300fec579f8fc75a53edbd9a6f74e2d44f) --- diff --git a/src/pdumper.c b/src/pdumper.c index e83c7bcf9a1..174dfdb47ef 100644 --- a/src/pdumper.c +++ b/src/pdumper.c @@ -677,8 +677,8 @@ static Lisp_Object dump_ptr_referrer (const char *label, void const *address) { char buf[128]; - buf[0] = '\0'; - sprintf (buf, "%s @ %p", label, address); + if (sizeof buf <= snprintf (buf, sizeof buf, "%s @ %p", label, address)) + strcpy (buf + sizeof buf - 4, "..."); return build_string (buf); } @@ -3145,8 +3145,10 @@ dump_vectorlike (struct dump_context *ctx, case PVEC_TS_NODE: break; } - char msg[60]; - snprintf (msg, sizeof msg, "pseudovector type %d", (int) ptype); + int iptype = ptype; + static char const fmt[] = "pseudovector type %d"; + char msg[sizeof fmt - sizeof "%d" + INT_STRLEN_BOUND (iptype) + 1]; + sprintf (msg, fmt, iptype); error_unsupported_dump_object (ctx, lv, msg); }