]> git.eshelyaron.com Git - emacs.git/commitdiff
* doprnt.c (doprnt): Don't assume string length fits in 'int'.
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 4 Jul 2012 08:26:20 +0000 (01:26 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 4 Jul 2012 08:26:20 +0000 (01:26 -0700)
Tighten new eassert a bit.

src/ChangeLog
src/doprnt.c

index 065ff35ce778fe27fb989d1ed6fc22e42cccad3b..a600a0b2b6f7aaa489272c1d89d9a63c11383876 100644 (file)
@@ -1,3 +1,8 @@
+2012-07-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * doprnt.c (doprnt): Don't assume string length fits in 'int'.
+       Tighten new eassert a bit.
+
 2012-07-04  Dmitry Antipov  <dmantipov@yandex.ru>
 
        Fix compilation with --enable-gcc-warnings and -O1
index 707dd0648b57b787cc75f73327ae23d86a8dd6ef..2aa236d8bbf1842cead7b24ccda75c8db15ea1a1 100644 (file)
@@ -135,8 +135,8 @@ ptrdiff_t
 doprnt (char *buffer, ptrdiff_t bufsize, const char *format,
        const char *format_end, va_list ap)
 {
-  const char *fmt = format;    /* Pointer into format string */
-  register char *bufptr = buffer; /* Pointer into output buffer.. */
+  const char *fmt = format;    /* Pointer into format string */
+  char *bufptr = buffer;       /* Pointer into output buffer.  */
 
   /* Use this for sprintf unless we need something really big.  */
   char tembuf[DBL_MAX_10_EXP + 100];
@@ -150,7 +150,7 @@ doprnt (char *buffer, ptrdiff_t bufsize, const char *format,
   /* Buffer we have got with malloc.  */
   char *big_buffer = NULL;
 
-  register int tem = -1;
+  ptrdiff_t tem = -1;
   char *string;
   char fixed_buffer[20];       /* Default buffer for small formatting. */
   char *fmtcpy;
@@ -368,7 +368,7 @@ doprnt (char *buffer, ptrdiff_t bufsize, const char *format,
 
              /* Copy string into final output, truncating if no room.  */
            doit:
-             eassert (tem != -1);
+             eassert (0 <= tem);
              /* Coming here means STRING contains ASCII only.  */
              if (STRING_BYTES_BOUND < tem)
                error ("Format width or precision too large");