(Fformat_time_string): Don't hang if strftime produces
authorRichard M. Stallman <rms@gnu.org>
Tue, 29 Jul 1997 02:29:32 +0000 (02:29 +0000)
committerRichard M. Stallman <rms@gnu.org>
Tue, 29 Jul 1997 02:29:32 +0000 (02:29 +0000)
an empty string.  Fix arguments of second call to strftime.
Remove check for result being negative, this cannot happen.

src/editfns.c

index fa4f486..e49f53f 100644 (file)
@@ -874,16 +874,15 @@ DEFUN ("format-time-string", Fformat_time_string, Sformat_time_string, 1, 3, 0,
       char *buf = (char *) alloca (size + 1);
       int result;
 
+      buf[0] = '\1';
       result = emacs_strftime (buf, size, XSTRING (format_string)->data,
                               (NILP (universal) ? localtime (&value)
                                : gmtime (&value)));
-      if (result > 0 && result < size)
+      if ((result > 0 && result < size) || (result == 0 && buf[0] == '\0'))
        return build_string (buf);
-      if (result < 0)
-       error ("Invalid time format specification");
 
       /* If buffer was too small, make it bigger and try again.  */
-      result = emacs_strftime (buf, 0, XSTRING (format_string)->data,
+      result = emacs_strftime (NULL, 0x7fffffff, XSTRING (format_string)->data,
                               (NILP (universal) ? localtime (&value)
                                : gmtime (&value)));
       size = result + 1;