mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-07 06:43:00 +03:00
Add mallinfo2 function that support sizes >= 4GB.
The current int type can easily overflow for allocation of more than 4GB.
This commit is contained in:
@@ -638,6 +638,8 @@ libc_hidden_proto (__libc_mallopt)
|
||||
be kept as longs, the reported values may wrap around zero and
|
||||
thus be inaccurate.
|
||||
*/
|
||||
struct mallinfo2 __libc_mallinfo2(void);
|
||||
|
||||
struct mallinfo __libc_mallinfo(void);
|
||||
|
||||
|
||||
@@ -4911,7 +4913,7 @@ __malloc_usable_size (void *m)
|
||||
*/
|
||||
|
||||
static void
|
||||
int_mallinfo (mstate av, struct mallinfo *m)
|
||||
int_mallinfo (mstate av, struct mallinfo2 *m)
|
||||
{
|
||||
size_t i;
|
||||
mbinptr b;
|
||||
@@ -4974,10 +4976,10 @@ int_mallinfo (mstate av, struct mallinfo *m)
|
||||
}
|
||||
|
||||
|
||||
struct mallinfo
|
||||
__libc_mallinfo (void)
|
||||
struct mallinfo2
|
||||
__libc_mallinfo2 (void)
|
||||
{
|
||||
struct mallinfo m;
|
||||
struct mallinfo2 m;
|
||||
mstate ar_ptr;
|
||||
|
||||
if (__malloc_initialized < 0)
|
||||
@@ -4998,6 +5000,27 @@ __libc_mallinfo (void)
|
||||
return m;
|
||||
}
|
||||
|
||||
struct mallinfo
|
||||
__libc_mallinfo (void)
|
||||
{
|
||||
struct mallinfo m;
|
||||
struct mallinfo2 m2 = __libc_mallinfo2 ();
|
||||
|
||||
m.arena = m2.arena;
|
||||
m.ordblks = m2.ordblks;
|
||||
m.smblks = m2.smblks;
|
||||
m.hblks = m2.hblks;
|
||||
m.hblkhd = m2.hblkhd;
|
||||
m.usmblks = m2.usmblks;
|
||||
m.fsmblks = m2.fsmblks;
|
||||
m.uordblks = m2.uordblks;
|
||||
m.fordblks = m2.fordblks;
|
||||
m.keepcost = m2.keepcost;
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
------------------------------ malloc_stats ------------------------------
|
||||
*/
|
||||
@@ -5016,7 +5039,7 @@ __malloc_stats (void)
|
||||
stderr->_flags2 |= _IO_FLAGS2_NOTCANCEL;
|
||||
for (i = 0, ar_ptr = &main_arena;; i++)
|
||||
{
|
||||
struct mallinfo mi;
|
||||
struct mallinfo2 mi;
|
||||
|
||||
memset (&mi, 0, sizeof (mi));
|
||||
__libc_lock_lock (ar_ptr->mutex);
|
||||
@@ -5632,6 +5655,8 @@ strong_alias (__libc_valloc, __valloc) weak_alias (__libc_valloc, valloc)
|
||||
strong_alias (__libc_pvalloc, __pvalloc) weak_alias (__libc_pvalloc, pvalloc)
|
||||
strong_alias (__libc_mallinfo, __mallinfo)
|
||||
weak_alias (__libc_mallinfo, mallinfo)
|
||||
strong_alias (__libc_mallinfo2, __mallinfo2)
|
||||
weak_alias (__libc_mallinfo2, mallinfo2)
|
||||
strong_alias (__libc_mallopt, __mallopt) weak_alias (__libc_mallopt, mallopt)
|
||||
|
||||
weak_alias (__malloc_stats, malloc_stats)
|
||||
|
Reference in New Issue
Block a user