From: Ulrich Drepper Date: Sun, 18 May 2008 04:25:44 +0000 (+0000) Subject: * nscd/mem.c (gc): Correctly determine highest used array element X-Git-Tag: upstream/2.30~14204 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fa526148d6d78bf97f5628a023d290d071b47592;p=external%2Fglibc.git * nscd/mem.c (gc): Correctly determine highest used array element in mark. --- diff --git a/ChangeLog b/ChangeLog index 1aa2a36..e17090f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2008-05-17 Ulrich Drepper + * nscd/mem.c (gc): Correctly determine highest used array element + in mark. + * nscd/mem.c (markrange): Add assert to check entries are all aligned. Small cleanup in bitmap use. diff --git a/nscd/mem.c b/nscd/mem.c index 0bcb2aa..bf3777d 100644 --- a/nscd/mem.c +++ b/nscd/mem.c @@ -131,8 +131,8 @@ gc (struct database_dyn *db) size_t stack_used = sizeof (bool) * db->head->module; if (__builtin_expect (stack_used > MAX_STACK_USE, 0)) stack_used = 0; - size_t memory_needed = ((db->head->first_free / BLOCK_ALIGN + BITS - 1) - / BITS) * sizeof (BITMAP_T); + size_t nmark = (db->head->first_free / BLOCK_ALIGN + BITS - 1) / BITS; + size_t memory_needed = nmark * sizeof (BITMAP_T); if (stack_used + memory_needed <= MAX_STACK_USE) { mark = (BITMAP_T *) alloca (memory_needed); @@ -234,7 +234,7 @@ gc (struct database_dyn *db) qsort (he, cnt, sizeof (struct hashentry *), sort_he); /* Determine the highest used address. */ - size_t high = sizeof (mark); + size_t high = nmark; while (high > 0 && mark[high - 1] == 0) --high;