Commit f52fcaa4 authored by Andreas Schwab's avatar Andreas Schwab
Browse files

(Fformat): Correctly format EMACS_INT values.

parent 3b58b873
2007-11-15 Andreas Schwab <schwab@suse.de>
* editfns.c (Fformat): Correctly format EMACS_INT values.
2007-11-15 Juanma Barranquero <lekktu@gmail.com>
 
* macfns.c (Fx_create_frame, Fx_display_pixel_width)
......
......@@ -3803,23 +3803,35 @@ usage: (format STRING &rest OBJECTS) */)
format - this_format_start);
this_format[format - this_format_start] = 0;
if (INTEGERP (args[n]))
if (format[-1] == 'e' || format[-1] == 'f' || format[-1] == 'g')
sprintf (p, this_format, XFLOAT_DATA (args[n]));
else
{
if (format[-1] == 'd')
sprintf (p, this_format, XINT (args[n]));
/* Don't sign-extend for octal or hex printing. */
if (sizeof (EMACS_INT) > sizeof (int))
{
/* Insert 'l' before format spec. */
this_format[format - this_format_start]
= this_format[format - this_format_start - 1];
this_format[format - this_format_start - 1] = 'l';
this_format[format - this_format_start + 1] = 0;
}
if (INTEGERP (args[n]))
{
if (format[-1] == 'd')
sprintf (p, this_format, XINT (args[n]));
/* Don't sign-extend for octal or hex printing. */
else
sprintf (p, this_format, XUINT (args[n]));
}
else if (format[-1] == 'd')
/* Maybe we should use "%1.0f" instead so it also works
for values larger than MAXINT. */
sprintf (p, this_format, (EMACS_INT) XFLOAT_DATA (args[n]));
else
sprintf (p, this_format, XUINT (args[n]));
/* Don't sign-extend for octal or hex printing. */
sprintf (p, this_format, (EMACS_UINT) XFLOAT_DATA (args[n]));
}
else if (format[-1] == 'e' || format[-1] == 'f' || format[-1] == 'g')
sprintf (p, this_format, XFLOAT_DATA (args[n]));
else if (format[-1] == 'd')
/* Maybe we should use "%1.0f" instead so it also works
for values larger than MAXINT. */
sprintf (p, this_format, (EMACS_INT) XFLOAT_DATA (args[n]));
else
/* Don't sign-extend for octal or hex printing. */
sprintf (p, this_format, (EMACS_UINT) XFLOAT_DATA (args[n]));
if (p > buf
&& multibyte
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment