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

lib/ChangeLog
lib/strftime.c

index 4d0e73a..236184d 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-11  Jim Meyering  <jim@meyering.net>
 
        * getdate.c: Regenerate using bison-2.0.
index 8085a59..78a963b 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;