diff options
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | locale/programs/3level.h | 21 | ||||
-rw-r--r-- | sysdeps/sparc/sparc32/__longjmp.S | 4 |
3 files changed, 22 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog index 007e43384d..8d9ddf77d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2000-09-10 David S. Miller <davem@redhat.com> + + * sysdeps/sparc/sparc32/__longjmp.S (__longjmp): Correct %fp + frame pointer offset for non-fast path. + +2000-09-10 Ulrich Drepper <drepper@redhat.com> + + * locale/programs/3level.h (*_init): Initialize level1, level2, + and level3 as well. + (*_add): Remove a few unnecessary conditionals. + 2000-09-05 Wolfram Gloger <wg@malloc.de> * malloc/thread-m.h [_LIBC]: Even if not linking with libpthread, diff --git a/locale/programs/3level.h b/locale/programs/3level.h index d8293322b1..5bb8929ef4 100644 --- a/locale/programs/3level.h +++ b/locale/programs/3level.h @@ -66,8 +66,11 @@ struct TABLE static inline void CONCAT(TABLE,_init) (struct TABLE *t) { + t->level1 = NULL; t->level1_alloc = t->level1_size = 0; + t->level2 = NULL; t->level2_alloc = t->level2_size = 0; + t->level3 = NULL; t->level3_alloc = t->level3_size = 0; } @@ -116,10 +119,8 @@ CONCAT(TABLE,_add) (struct TABLE *t, uint32_t wc, ELEMENT value) size_t alloc = 2 * t->level1_alloc; if (alloc <= index1) alloc = index1 + 1; - t->level1 = (t->level1_alloc > 0 - ? (uint32_t *) xrealloc ((char *) t->level1, - alloc * sizeof (uint32_t)) - : (uint32_t *) xmalloc (alloc * sizeof (uint32_t))); + t->level1 = (uint32_t *) xrealloc ((char *) t->level1, + alloc * sizeof (uint32_t)); t->level1_alloc = alloc; } while (index1 >= t->level1_size) @@ -131,10 +132,8 @@ CONCAT(TABLE,_add) (struct TABLE *t, uint32_t wc, ELEMENT value) if (t->level2_size == t->level2_alloc) { size_t alloc = 2 * t->level2_alloc + 1; - t->level2 = (t->level2_alloc > 0 - ? (uint32_t *) xrealloc ((char *) t->level2, - (alloc << t->q) * sizeof (uint32_t)) - : (uint32_t *) xmalloc ((alloc << t->q) * sizeof (uint32_t))); + t->level2 = (uint32_t *) xrealloc ((char *) t->level2, + (alloc << t->q) * sizeof (uint32_t)); t->level2_alloc = alloc; } i1 = t->level2_size << t->q; @@ -151,10 +150,8 @@ CONCAT(TABLE,_add) (struct TABLE *t, uint32_t wc, ELEMENT value) if (t->level3_size == t->level3_alloc) { size_t alloc = 2 * t->level3_alloc + 1; - t->level3 = (t->level3_alloc > 0 - ? (ELEMENT *) xrealloc ((char *) t->level3, - (alloc << t->p) * sizeof (ELEMENT)) - : (ELEMENT *) xmalloc ((alloc << t->p) * sizeof (ELEMENT))); + t->level3 = (ELEMENT *) xrealloc ((char *) t->level3, + (alloc << t->p) * sizeof (ELEMENT)); t->level3_alloc = alloc; } i1 = t->level3_size << t->p; diff --git a/sysdeps/sparc/sparc32/__longjmp.S b/sysdeps/sparc/sparc32/__longjmp.S index 1d49b264bb..ef83dee76a 100644 --- a/sysdeps/sparc/sparc32/__longjmp.S +++ b/sysdeps/sparc/sparc32/__longjmp.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 93, 96, 97, 98, 99 Free Software Foundation, Inc. +/* Copyright (C) 1991, 93, 96, 97, 98, 99, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -23,7 +23,7 @@ #include <bits/setjmp.h> #define ENV(base,reg) [%base + (reg * 4)] #define ST_FLUSH_WINDOWS 3 -#define RW_FP [%fp + 0x38] +#define RW_FP [%fp + 0x48] ENTRY(__longjmp) /* Store our arguments in global registers so we can still |