]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Make the size calculations inside VG_(mallinfo) 64-bit clean.
authorJulian Seward <jseward@acm.org>
Thu, 29 May 2008 13:45:49 +0000 (13:45 +0000)
committerJulian Seward <jseward@acm.org>
Thu, 29 May 2008 13:45:49 +0000 (13:45 +0000)
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.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8149

coregrind/m_mallocfree.c

index f78b18eac73c54810441c64a7ed2cf5b6c4c02b4..3ac2a6249547ad99f71c97b6ae2f558511360de2 100644 (file)
@@ -1502,7 +1502,7 @@ SizeT VG_(arena_payload_szB) ( ThreadId tid, ArenaId aid, void* ptr )
 // 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 @@ void VG_(mallinfo) ( ThreadId tid, struct vg_mallinfo* mi )
       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;
       }