mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-10 19:30:10 +00:00
Fix malloc_info without prioor allocations.
This commit is contained in:
parent
52e2ea9a83
commit
346bc35c33
@ -1,5 +1,9 @@
|
|||||||
2010-01-14 Ulrich Drepper <drepper@redhat.com>
|
2010-01-14 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
[BZ #11126]
|
||||||
|
* malloc/malloc.c (malloc_info): Initialize malloc if not already
|
||||||
|
done. Handle empty bin lists.
|
||||||
|
|
||||||
* posix/unistd.h: Change getpagesize and getdtablesize declaration
|
* posix/unistd.h: Change getpagesize and getdtablesize declaration
|
||||||
visibility some more.
|
visibility some more.
|
||||||
|
|
||||||
|
@ -6369,16 +6369,19 @@ malloc_info (int options, FILE *fp)
|
|||||||
|
|
||||||
mbinptr bin = bin_at (ar_ptr, 1);
|
mbinptr bin = bin_at (ar_ptr, 1);
|
||||||
struct malloc_chunk *r = bin->fd;
|
struct malloc_chunk *r = bin->fd;
|
||||||
while (r != bin)
|
if (r != NULL)
|
||||||
{
|
{
|
||||||
++sizes[NFASTBINS].count;
|
while (r != bin)
|
||||||
sizes[NFASTBINS].total += r->size;
|
{
|
||||||
sizes[NFASTBINS].from = MIN (sizes[NFASTBINS].from, r->size);
|
++sizes[NFASTBINS].count;
|
||||||
sizes[NFASTBINS].to = MAX (sizes[NFASTBINS].to, r->size);
|
sizes[NFASTBINS].total += r->size;
|
||||||
r = r->fd;
|
sizes[NFASTBINS].from = MIN (sizes[NFASTBINS].from, r->size);
|
||||||
|
sizes[NFASTBINS].to = MAX (sizes[NFASTBINS].to, r->size);
|
||||||
|
r = r->fd;
|
||||||
|
}
|
||||||
|
nblocks += sizes[NFASTBINS].count;
|
||||||
|
avail += sizes[NFASTBINS].total;
|
||||||
}
|
}
|
||||||
nblocks += sizes[NFASTBINS].count;
|
|
||||||
avail += sizes[NFASTBINS].total;
|
|
||||||
|
|
||||||
for (size_t i = 2; i < NBINS; ++i)
|
for (size_t i = 2; i < NBINS; ++i)
|
||||||
{
|
{
|
||||||
@ -6388,17 +6391,18 @@ malloc_info (int options, FILE *fp)
|
|||||||
sizes[NFASTBINS - 1 + i].to = sizes[NFASTBINS - 1 + i].total
|
sizes[NFASTBINS - 1 + i].to = sizes[NFASTBINS - 1 + i].total
|
||||||
= sizes[NFASTBINS - 1 + i].count = 0;
|
= sizes[NFASTBINS - 1 + i].count = 0;
|
||||||
|
|
||||||
while (r != bin)
|
if (r != NULL)
|
||||||
{
|
while (r != bin)
|
||||||
++sizes[NFASTBINS - 1 + i].count;
|
{
|
||||||
sizes[NFASTBINS - 1 + i].total += r->size;
|
++sizes[NFASTBINS - 1 + i].count;
|
||||||
sizes[NFASTBINS - 1 + i].from = MIN (sizes[NFASTBINS - 1 + i].from,
|
sizes[NFASTBINS - 1 + i].total += r->size;
|
||||||
|
sizes[NFASTBINS - 1 + i].from
|
||||||
|
= MIN (sizes[NFASTBINS - 1 + i].from, r->size);
|
||||||
|
sizes[NFASTBINS - 1 + i].to = MAX (sizes[NFASTBINS - 1 + i].to,
|
||||||
r->size);
|
r->size);
|
||||||
sizes[NFASTBINS - 1 + i].to = MAX (sizes[NFASTBINS - 1 + i].to,
|
|
||||||
r->size);
|
|
||||||
|
|
||||||
r = r->fd;
|
r = r->fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizes[NFASTBINS - 1 + i].count == 0)
|
if (sizes[NFASTBINS - 1 + i].count == 0)
|
||||||
sizes[NFASTBINS - 1 + i].from = 0;
|
sizes[NFASTBINS - 1 + i].from = 0;
|
||||||
@ -6460,6 +6464,9 @@ malloc_info (int options, FILE *fp)
|
|||||||
fputs ("</heap>\n", fp);
|
fputs ("</heap>\n", fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(__malloc_initialized < 0)
|
||||||
|
ptmalloc_init ();
|
||||||
|
|
||||||
fputs ("<malloc version=\"1\">\n", fp);
|
fputs ("<malloc version=\"1\">\n", fp);
|
||||||
|
|
||||||
/* Iterate over all arenas currently in use. */
|
/* Iterate over all arenas currently in use. */
|
||||||
|
Loading…
Reference in New Issue
Block a user