emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 4a25ed300fe 2/4: Port pdumper to unlikely long sprintf output


From: Paul Eggert
Subject: master 4a25ed300fe 2/4: Port pdumper to unlikely long sprintf output
Date: Wed, 22 Jan 2025 01:31:07 -0500 (EST)

branch: master
commit 4a25ed300fec579f8fc75a53edbd9a6f74e2d44f
Author: Paul Eggert <eggert@cs.ucla.edu>
Commit: Paul Eggert <eggert@cs.ucla.edu>

    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.
---
 src/pdumper.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

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);
 }
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]