From d8143fa89b60943ac569c02f2a6d4738a217df88 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 24 Nov 2015 23:43:43 -0800 Subject: [PATCH] Fix module_format_fun_env when dynlib_addr fails MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * src/emacs-module.c (module_format_fun_env): exprintf doesn’t support %p, so use %x. Reported by Eli Zaretskii in: http://lists.gnu.org/archive/html/emacs-devel/2015-11/msg02122.html --- src/emacs-module.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/emacs-module.c b/src/emacs-module.c index 11aefc31359..1388e5348bb 100644 --- a/src/emacs-module.c +++ b/src/emacs-module.c @@ -1035,15 +1035,15 @@ module_format_fun_env (const struct module_fun_env *env) { /* Try to print a function name if possible. */ const char *path, *sym; - char buffer[256]; + static char const noaddr_format[] = "#"; + char buffer[sizeof noaddr_format + INT_STRLEN_BOUND (intptr_t) + 256]; char *buf = buffer; ptrdiff_t bufsize = sizeof buffer; ptrdiff_t size = (dynlib_addr (env->subr, &path, &sym) ? exprintf (&buf, &bufsize, buffer, -1, "#", sym, path) - : exprintf (&buf, &bufsize, buffer, -1, - "#", env->subr)); + : sprintf (buffer, noaddr_format, env->subr)); Lisp_Object unibyte_result = make_unibyte_string (buffer, size); if (buf != buffer) xfree (buf); -- 2.39.2