emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/src/editfns.c,v


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/src/editfns.c,v
Date: Wed, 10 Jan 2007 03:50:20 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Stefan Monnier <monnier>        07/01/10 03:50:20

Index: editfns.c
===================================================================
RCS file: /sources/emacs/emacs/src/editfns.c,v
retrieving revision 1.430
retrieving revision 1.431
diff -u -b -r1.430 -r1.431
--- editfns.c   5 Jan 2007 08:29:41 -0000       1.430
+++ editfns.c   10 Jan 2007 03:50:19 -0000      1.431
@@ -1,7 +1,7 @@
 /* Lisp functions pertaining to editing.
    Copyright (C) 1985, 1986, 1987, 1989, 1993, 1994, 1995, 1996,
                  1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-                 2005, 2006 Free Software Foundation, Inc.
+                 2005, 2006, 2007 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -3631,7 +3631,12 @@
                if (*format != 'd' && *format != 'o' && *format != 'x'
                    && *format != 'i' && *format != 'X' && *format != 'c')
                  error ("Invalid format operation %%%c", *format);
-               args[n] = Ftruncate (args[n], Qnil);
+               /* This fails unnecessarily if args[n] is bigger than
+                  most-positive-fixnum but smaller than MAXINT.
+                  These cases are important because we sometimes use floats
+                  to represent such integer values (typically such values
+                  come from UIDs or PIDs).  */
+               /* args[n] = Ftruncate (args[n], Qnil); */
              }
 
            /* Note that we're using sprintf to print floats,
@@ -3799,8 +3804,15 @@
                  else
                    sprintf (p, this_format, XUINT (args[n]));
                }
-             else
+             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




reply via email to

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