|
From: <sv...@va...> - 2008-05-29 13:45:46
|
Author: sewardj
Date: 2008-05-29 14:45:49 +0100 (Thu, 29 May 2008)
New Revision: 8149
Log:
Make the size calculations inside VG_(mallinfo) 64-bit clean.
I don't really understand how 'struct mallinfo' makes any sense on a
64-bit platform given that all the field sizes are 32-bit ints, and
surely at least .arena and .uordblocks and probably others could
easily exceed 32-bit range.
Modified:
trunk/coregrind/m_mallocfree.c
Modified: trunk/coregrind/m_mallocfree.c
===================================================================
--- trunk/coregrind/m_mallocfree.c 2008-05-29 13:32:51 UTC (rev 8148)
+++ trunk/coregrind/m_mallocfree.c 2008-05-29 13:45:49 UTC (rev 8149)
@@ -1502,7 +1502,7 @@
// client request. So instead we use a pointer to do call by reference.
void VG_(mallinfo) ( ThreadId tid, struct vg_mallinfo* mi )
{
- UInt i, free_blocks, free_blocks_size;
+ UWord i, free_blocks, free_blocks_size;
Arena* a = arenaId_to_ArenaP(VG_AR_CLIENT);
// Traverse free list and calculate free blocks statistics.
@@ -1513,7 +1513,7 @@
if (b == NULL) continue;
for (;;) {
free_blocks++;
- free_blocks_size += get_pszB(a, b);
+ free_blocks_size += (UWord)get_pszB(a, b);
b = get_next_b(b);
if (b == a->freelist[i]) break;
}
|