(my_strftime): Do not invoke mbrlen with a size of (size_t) -1; it's
authordrepper <drepper>
Tue, 28 Nov 2000 21:12:17 +0000 (21:12 +0000)
committerdrepper <drepper>
Tue, 28 Nov 2000 21:12:17 +0000 (21:12 +0000)
not portable.

time/strftime.c

index f98fe21..2f99143 100644 (file)
@@ -513,6 +513,9 @@ my_strftime (s, maxsize, format, tp ut_argument)
   size_t i = 0;
   CHAR_T *p = s;
   const CHAR_T *f;
+#if DO_MULTIBYTE && !defined COMPILE_WIDE
+  const char *format_end = NULL;
+#endif
 
   zone = NULL;
 #if HAVE_TM_ZONE
@@ -605,10 +608,15 @@ my_strftime (s, maxsize, format, tp ut_argument)
          {
            mbstate_t mbstate = mbstate_zero;
            size_t len = 0;
+           size_t fsize;
+
+           if (! format_end)
+             format_end = f + strlen (f) + 1;
+           fsize = format_end - f;
 
            do
              {
-               size_t bytes = mbrlen (f + len, (size_t) -1, &mbstate);
+               size_t bytes = mbrlen (f + len, fsize - len, &mbstate);
 
                if (bytes == 0)
                  break;