Update.
authorUlrich Drepper <drepper@redhat.com>
Mon, 10 Jan 2005 11:10:54 +0000 (11:10 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 10 Jan 2005 11:10:54 +0000 (11:10 +0000)
2005-01-10  Ulrich Drepper  <drepper@redhat.com>

* sysdeps/generic/dl-tls.c (_dl_next_tls_modid): Fix assertion and
recognition of last entry.

ChangeLog
sysdeps/generic/dl-tls.c
time/strptime_l.c

index 7f124f1..b1295b4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-01-10  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/generic/dl-tls.c (_dl_next_tls_modid): Fix assertion and
+       recognition of last entry.
+
 2005-01-09  Ulrich Drepper  <drepper@redhat.com>
 
        * elf/dl-runtime.c: Inlcude <sys/param.h>.
index 10b7f2c..099742c 100644 (file)
@@ -67,7 +67,10 @@ _dl_next_tls_modid (void)
       /* Note that this branch will never be executed during program
         start since there are no gaps at that time.  Therefore it
         does not matter that the dl_tls_dtv_slotinfo is not allocated
-        yet when the function is called for the first times.  */
+        yet when the function is called for the first times.
+
+        NB: the offset +1 is due to the fact that DTV[0] is used
+        for something else.  */
       result = GL(dl_tls_static_nelem) + 1;
       /* If the following would not be true we mustn't have assumed
         there is a gap.  */
@@ -90,11 +93,11 @@ _dl_next_tls_modid (void)
        }
       while ((runp = runp->next) != NULL);
 
-      if (result >= GL(dl_tls_max_dtv_idx))
+      if (result > GL(dl_tls_max_dtv_idx))
        {
          /* The new index must indeed be exactly one higher than the
             previous high.  */
-         assert (result == GL(dl_tls_max_dtv_idx));
+         assert (result == GL(dl_tls_max_dtv_idx) + 1);
 
          /* There is no gap anymore.  */
          GL(dl_tls_dtv_gaps) = false;
index 7deaef8..01c4f82 100644 (file)
@@ -544,8 +544,8 @@ __strptime_internal (rp, fmt, tm, decided, era_cnt LOCALE_PARAM)
                is_pm = 1;
              else
                return NULL;
-             break;
            }
+         break;
        case 'r':
 #ifdef _NL_CURRENT
          if (*decided != raw)