]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fformat): When formatting an integer as float take precision into account.
authorAndreas Schwab <schwab@suse.de>
Fri, 16 Nov 2007 00:10:00 +0000 (00:10 +0000)
committerAndreas Schwab <schwab@suse.de>
Fri, 16 Nov 2007 00:10:00 +0000 (00:10 +0000)
src/ChangeLog
src/editfns.c

index 6c22f16b189ae4c07281cec15f7e46efa59f6370..3a74e58061ef2c991d2f29b065fc887bde8ab5b4 100644 (file)
@@ -1,6 +1,7 @@
 2007-11-15  Andreas Schwab  <schwab@suse.de>
 
        * editfns.c (Fformat): Correctly format EMACS_INT values.
+       When formatting an integer as float take precision into account.
 
        * keyboard.c (Fevent_symbol_parse_modifiers): Fix declaration.
 
index f049aa67c308b962dbb36f8f2b064fd8cc04b5b1..eaee2bfadfacc5b5fac0aa61bedca22db33c1d79 100644 (file)
@@ -3594,18 +3594,23 @@ usage: (format STRING &rest OBJECTS)  */)
        /* Would get MPV otherwise, since Lisp_Int's `point' to low memory.  */
        else if (INTEGERP (args[n]) && *format != 's')
          {
+           thissize = 30;
+
            /* The following loop assumes the Lisp type indicates
               the proper way to pass the argument.
               So make sure we have a flonum if the argument should
               be a double.  */
            if (*format == 'e' || *format == 'f' || *format == 'g')
-             args[n] = Ffloat (args[n]);
+             {
+               args[n] = Ffloat (args[n]);
+               if (precision[n] > 0)
+                 thissize += precision[n];
+             }
            else
              if (*format != 'd' && *format != 'o' && *format != 'x'
                  && *format != 'i' && *format != 'X' && *format != 'c')
                error ("Invalid format operation %%%c", *format);
 
-           thissize = 30;
            if (*format == 'c')
              {
                if (! SINGLE_BYTE_CHAR_P (XINT (args[n]))