chiark / gitweb /
eglibc (2.11.3-4+deb6u3) squeeze-lts; urgency=medium
[eglibc.git] / debian / patches / any / cvs-malloc_info-init.diff
1 2010-01-14  Ulrich Drepper  <drepper@redhat.com>
2  
3         [BZ #11126]
4         * malloc/malloc.c (malloc_info): Initialize malloc if not already
5         done.  Handle empty bin lists.
6  
7 ---
8  malloc/malloc.c |   41 ++++++++++++++++++++++++-----------------
9  1 file changed, 24 insertions(+), 17 deletions(-)
10
11 --- a/malloc/malloc.c
12 +++ b/malloc/malloc.c
13 @@ -6372,16 +6372,19 @@
14  
15      mbinptr bin = bin_at (ar_ptr, 1);
16      struct malloc_chunk *r = bin->fd;
17 -    while (r != bin)
18 +    if (r != NULL)
19        {
20 -       ++sizes[NFASTBINS].count;
21 -       sizes[NFASTBINS].total += r->size;
22 -       sizes[NFASTBINS].from = MIN (sizes[NFASTBINS].from, r->size);
23 -       sizes[NFASTBINS].to = MAX (sizes[NFASTBINS].to, r->size);
24 -       r = r->fd;
25 +       while (r != bin)
26 +         {
27 +           ++sizes[NFASTBINS].count;
28 +           sizes[NFASTBINS].total += r->size;
29 +           sizes[NFASTBINS].from = MIN (sizes[NFASTBINS].from, r->size);
30 +           sizes[NFASTBINS].to = MAX (sizes[NFASTBINS].to, r->size);
31 +           r = r->fd;
32 +         }
33 +       nblocks += sizes[NFASTBINS].count;
34 +       avail += sizes[NFASTBINS].total;
35        }
36 -    nblocks += sizes[NFASTBINS].count;
37 -    avail += sizes[NFASTBINS].total;
38  
39      for (size_t i = 2; i < NBINS; ++i)
40        {
41 @@ -6391,17 +6394,18 @@
42         sizes[NFASTBINS - 1 + i].to = sizes[NFASTBINS - 1 + i].total
43           = sizes[NFASTBINS - 1 + i].count = 0;
44  
45 -       while (r != bin)
46 -         {
47 -           ++sizes[NFASTBINS - 1 + i].count;
48 -           sizes[NFASTBINS - 1 + i].total += r->size;
49 -           sizes[NFASTBINS - 1 + i].from = MIN (sizes[NFASTBINS - 1 + i].from,
50 +       if (r != NULL)
51 +         while (r != bin)
52 +           {
53 +             ++sizes[NFASTBINS - 1 + i].count;
54 +             sizes[NFASTBINS - 1 + i].total += r->size;
55 +             sizes[NFASTBINS - 1 + i].from
56 +               = MIN (sizes[NFASTBINS - 1 + i].from, r->size);
57 +             sizes[NFASTBINS - 1 + i].to = MAX (sizes[NFASTBINS - 1 + i].to,
58                                                  r->size);
59 -           sizes[NFASTBINS - 1 + i].to = MAX (sizes[NFASTBINS - 1 + i].to,
60 -                                              r->size);
61  
62 -           r = r->fd;
63 -         }
64 +             r = r->fd;
65 +           }
66  
67         if (sizes[NFASTBINS - 1 + i].count == 0)
68           sizes[NFASTBINS - 1 + i].from = 0;
69 @@ -6463,6 +6467,9 @@
70      fputs ("</heap>\n", fp);
71    }
72  
73 +  if(__malloc_initialized < 0)
74 +    ptmalloc_init ();
75 +
76    fputs ("<malloc version=\"1\">\n", fp);
77  
78    /* Iterate over all arenas currently in use.  */