Update.
authorUlrich Drepper <drepper@redhat.com>
Thu, 24 Sep 1998 18:06:23 +0000 (18:06 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 24 Sep 1998 18:06:23 +0000 (18:06 +0000)
1998-09-24  Ulrich Drepper  <drepper@cygnus.com>

* debug/catchsegv.sh: Also produce output if cloned process died.

1998-09-24  Paul Eggert  <eggert@twinsun.com>

* strftime.c (f_wkday): Remove duplicate definition.
(f_wkday, f_month, a_wkday, a_month, ampm): Define as macros when
!defined _NL_CURRENT && !HAVE_STRFTIME; this propagates the
1998-09-11 fix to this case.
(wkday_len, month_len): Remove these macros; they're no longer needed.

1998-09-24  Paul Eggert  <eggert@twinsun.com>

* strftime.c (my_strftime): Don't store past the end of a
zero-sized buffer.

* time/strftime.c (underlying_strftime):
* time/strftime.c (INT_STRLEN_BOUND): Fix typo by changing 100 to 1000.

ChangeLog
debug/catchsegv.sh
time/strftime.c

index fb35673..c0a3218 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,13 +1,30 @@
+1998-09-24  Ulrich Drepper  <drepper@cygnus.com>
+
+       * debug/catchsegv.sh: Also produce output if cloned process died.
+
+1998-09-24  Paul Eggert  <eggert@twinsun.com>
+
+       * strftime.c (f_wkday): Remove duplicate definition.
+       (f_wkday, f_month, a_wkday, a_month, ampm): Define as macros when
+       !defined _NL_CURRENT && !HAVE_STRFTIME; this propagates the
+       1998-09-11 fix to this case.
+       (wkday_len, month_len): Remove these macros; they're no longer needed.
+
+1998-09-24  Paul Eggert  <eggert@twinsun.com>
+
+       * strftime.c (my_strftime): Don't store past the end of a
+       zero-sized buffer.
+
 1998-09-24  Paul Eggert  <eggert@twinsun.com>
 
-       * strftime.c (underlying_strftime):
+       * time/strftime.c (underlying_strftime):
        Set the buffer to a nonzero value before calling
        strftime, and check to see whether strftime has set the buffer to zero.
        This lets us distinguish between an empty buffer and an error.
 
 1998-09-24  Paul Eggert  <eggert@shade.twinsun.com>
 
-       * strftime.c (INT_STRLEN_BOUND): Fix typo by changing 100 to 1000.
+       * time/strftime.c (INT_STRLEN_BOUND): Fix typo by changing 100 to 1000.
        This fix is propagated from tzcode1998g.tar.gz.
 
 1998-09-24  Mark Kettenis  <kettenis@phys.uva.nl>
index 6ca404d..3af6570 100755 (executable)
@@ -51,6 +51,8 @@ Written by Ulrich Drepper.'
 fi
 
 segv_output=`basename "$prog"`.segv.$$
+# Make sure this output file does not exist.
+rm -f "$segv_output"
 
 # Redirect stderr to avoid termination message from shell.
 (exec 3>&2 2>/dev/null
@@ -60,8 +62,10 @@ SEGFAULT_OUTPUT_NAME=$segv_output \
 "$prog" ${1+"$@"} 2>&3 3>&-)
 exval=$?
 
-# Check for signal termination.
-if test $exval -gt 128 && test -f "$segv_output"; then
+# Check for output.  Even if the program terminated correctly it might
+# be that a inor process (clone) failed.  Therefore we do not check the
+# exit code.
+if test -f "$segv_output"; then
   # The program caught a signal.  The output is in the file with the
   # name we have in SEGFAULT_OUTPUT_NAME.  In the output the names of
   # functions in shared objects are available, but names in the static
index 61f688e..04d0e56 100644 (file)
@@ -416,15 +416,14 @@ my_strftime (s, maxsize, format, tp)
 {
   int hour12 = tp->tm_hour;
 #ifdef _NL_CURRENT
-  /* We cannot make the following values variables since we must dealy
+  /* We cannot make the following values variables since we must delay
      the evaluation of these values until really needed since some
      expressions might not be valid in every situation.  The `struct tm'
-     might be generated by a strptime() call and therefore initialized
+     might be generated by a strptime() call that initialized
      only a few elements.  Dereference the pointers only if the format
      requires this.  Then it is ok to fail if the pointers are invalid.  */
 # define a_wkday _NL_CURRENT (LC_TIME, ABDAY_1 + tp->tm_wday)
 # define f_wkday _NL_CURRENT (LC_TIME, DAY_1 + tp->tm_wday)
-# define f_wkday _NL_CURRENT (LC_TIME, DAY_1 + tp->tm_wday)
 # define a_month _NL_CURRENT (LC_TIME, ABMON_1 + tp->tm_mon)
 # define f_month _NL_CURRENT (LC_TIME, MON_1 + tp->tm_mon)
 # define ampm _NL_CURRENT (LC_TIME, tp->tm_hour > 11 ? PM_STR : AM_STR)
@@ -432,22 +431,17 @@ my_strftime (s, maxsize, format, tp)
 # define aw_len strlen (a_wkday)
 # define am_len strlen (a_month)
 # define ap_len strlen (ampm)
-
-# define wkday_len strlen (f_wkday)
-# define month_len strlen (f_month)
 #else
 # if !HAVE_STRFTIME
-  const char *const f_wkday = weekday_name[tp->tm_wday];
-  const char *const f_month = month_name[tp->tm_mon];
-  const char *const a_wkday = f_wkday;
-  const char *const a_month = f_month;
-  const char *const ampm = "AMPM" + 2 * (hour12 > 11);
+# define f_wkday (weekday_name[tp->tm_wday])
+# define f_month (month_name[tp->tm_mon])
+# define a_wkday f_wkday
+# define a_month f_month
+# define ampm ("AMPM" + 2 * (tp->tm_hour > 11))
+
   size_t aw_len = 3;
   size_t am_len = 3;
   size_t ap_len = 2;
-
-  size_t wkday_len = strlen (f_wkday);
-  size_t month_len = strlen (f_month);
 # endif
 #endif
   const char *zone;
@@ -669,7 +663,7 @@ my_strftime (s, maxsize, format, tp)
              to_lowcase = 0;
            }
 #if defined _NL_CURRENT || !HAVE_STRFTIME
-         cpy (wkday_len, f_wkday);
+         cpy (strlen (f_wkday), f_wkday);
          break;
 #else
          goto underlying_strftime;
@@ -695,7 +689,7 @@ my_strftime (s, maxsize, format, tp)
              to_lowcase = 0;
            }
 #if defined _NL_CURRENT || !HAVE_STRFTIME
-         cpy (month_len, f_month);
+         cpy (strlen (f_month), f_month);
          break;
 #else
          goto underlying_strftime;
@@ -1227,7 +1221,7 @@ my_strftime (s, maxsize, format, tp)
        }
     }
 
-  if (p)
+  if (p && i < maxsize)
     *p = '\0';
   return i;
 }