could include embedded null characters.
. It signals an error if the length of the formatted string is about to
- overflow MOST_POSITIVE_FIXNUM, to avoid producing strings longer than what
+ overflow ptrdiff_t or size_t, to avoid producing strings longer than what
Emacs can handle.
OTOH, this function supports only a small subset of the standard C formatted
/* Copy string into final output, truncating if no room. */
doit:
- eassert (0 <= tem);
+ eassert (tem >= 0);
/* Coming here means STRING contains ASCII only. */
if (STRING_BYTES_BOUND < tem)
error ("Format width or precision too large");
if (nbytes < *bufsize - 1)
return nbytes;
if (*buf != nonheapbuf)
- xfree (*buf);
+ {
+ xfree (*buf);
+ *buf = NULL;
+ }
*buf = xpalloc (NULL, bufsize, 1, bufsize_max, 1);
}
}