From: Paul Eggert Date: Wed, 25 Nov 2015 07:43:43 +0000 (-0800) Subject: Fix module_format_fun_env when dynlib_addr fails X-Git-Tag: emacs-25.0.90~651 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d8143fa89b60943ac569c02f2a6d4738a217df88;p=emacs.git Fix module_format_fun_env when dynlib_addr fails * 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 --- 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);