* strftime.c (my_strftime) [HAVE_STRFTIME && ! (_NL_CURRENT
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 14 Mar 2005 23:23:43 +0000 (23:23 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 14 Mar 2005 23:23:43 +0000 (23:23 +0000)
&& HAVE_STRUCT_ERA_ENTRY)]: Initialize the first byte of ubuf[].

lib/ChangeLog
lib/strftime.c

index 8dbabb6e332fad94201e742abb831786c906cfdb..07f84b0d1509c6c45c2c88c317d4fdf1813fccbc 100644 (file)
@@ -1,3 +1,12 @@
+2005-03-14  Jim Meyering  <jim@meyering.net>
+
+       * strftime.c (my_strftime) [HAVE_STRFTIME && ! (_NL_CURRENT
+       && HAVE_STRUCT_ERA_ENTRY)]: Initialize the first byte of ubuf[]
+       to be nonzero so that we (and caller) can detect the difference
+       between a valid zero-length expansion and an error return, even
+       when the underlying strftime fails before writing anything into
+       that location.
+
 2005-03-10  Jim Meyering  <jim@meyering.net>
 
        * save-cwd.c [!HAVE_FCHDIR]: Define open, fchdir, and chdir_long
index 8085a59925515f3286a1ff97540157791036c9f0..78a963b421702404a99e3f086b7568ac0208e8bb 100644 (file)
@@ -776,6 +776,7 @@ my_strftime (CHAR_T *s, size_t maxsize, const CHAR_T *format,
              *u++ = modifier;
            *u++ = format_char;
            *u = '\0';
+           ubuf[0] = '\1';
            len = strftime (ubuf, sizeof ubuf, ufmt, tp);
            if (len == 0 && ubuf[0] != '\0')
              return 0;