1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-05-20 01:11:31 +02:00

(long_time_expected_width, print_long_format): Fix

bug: the initial byte passed to strftime wasn't initialized to
a nonzero value after the buffer was reallocated.
This commit is contained in:
Jim Meyering
2001-01-03 09:47:09 +00:00
parent 5d3b5e175a
commit b042ca3c0f

View File

@@ -2362,9 +2362,14 @@ long_time_expected_width (void)
size_t bufsize = sizeof initbuf;
size_t len;
*buf = '\1';
while (! (len = strftime (buf, bufsize, fmt, tm)) && *buf)
buf = alloca (bufsize *= 2);
for (;;)
{
*buf = '\1';
len = strftime (buf, bufsize, fmt, tm);
if (len || ! *buf)
break;
buf = alloca (bufsize *= 2);
}
width = mbsnwidth (buf, len, 0);
if (width < 0)
@@ -2491,12 +2496,15 @@ print_long_format (const struct fileinfo *f)
int recent = six_months_ago <= when && when <= now;
char const *fmt = long_time_format[recent];
*p = '\1';
while (! (s = strftime (p, buf + bufsize - p - 1, fmt, when_local))
&& *p)
for (;;)
{
char *newbuf = (char *) alloca (bufsize *= 2);
char *newbuf;
*p = '\1';
s = strftime (p, buf + bufsize - p - 1, fmt, when_local);
if (s || ! *p)
break;
newbuf = alloca (bufsize *= 2);
memcpy (newbuf, buf, p - buf);
p = newbuf + (p - buf);
buf = newbuf;