SizeT current_val, SizeT old_val,
LeakCheckDeltaMode delta_mode)
{
+ // Make sure the buffer size is large enough. With old_val == 0 and
+ // current_val == ULLONG_MAX the delta including inserted commas is:
+ // 18,446,744,073,709,551,615
+ // whose length is 26. Therefore:
+ tl_assert(size >= 26 + 4 + 1);
+
if (delta_mode == LCD_Any)
buf[0] = '\0';
else if (current_val >= old_val)
{
// char arrays to produce the indication of increase/decrease in case
// of delta_mode != LCD_Any
- HChar d_bytes[20];
- HChar d_direct_bytes[20];
- HChar d_indirect_bytes[20];
- HChar d_num_blocks[20];
+ HChar d_bytes[31];
+ HChar d_direct_bytes[31];
+ HChar d_indirect_bytes[31];
+ HChar d_num_blocks[31];
- MC_(snprintf_delta) (d_bytes, 20,
+ MC_(snprintf_delta) (d_bytes, sizeof(d_bytes),
lr->szB + lr->indirect_szB,
lr->old_szB + lr->old_indirect_szB,
MC_(detect_memory_leaks_last_delta_mode));
- MC_(snprintf_delta) (d_direct_bytes, 20,
+ MC_(snprintf_delta) (d_direct_bytes, sizeof(d_direct_bytes),
lr->szB,
lr->old_szB,
MC_(detect_memory_leaks_last_delta_mode));
- MC_(snprintf_delta) (d_indirect_bytes, 20,
+ MC_(snprintf_delta) (d_indirect_bytes, sizeof(d_indirect_bytes),
lr->indirect_szB,
lr->old_indirect_szB,
MC_(detect_memory_leaks_last_delta_mode));
- MC_(snprintf_delta) (d_num_blocks, 20,
+ MC_(snprintf_delta) (d_num_blocks, sizeof(d_num_blocks),
(SizeT) lr->num_blocks,
(SizeT) lr->old_num_blocks,
MC_(detect_memory_leaks_last_delta_mode));
}
if (VG_(clo_verbosity) > 0 && !VG_(clo_xml)) {
- HChar d_bytes[20];
- HChar d_blocks[20];
+ HChar d_bytes[31];
+ HChar d_blocks[31];
# define DBY(new,old) \
- MC_(snprintf_delta) (d_bytes, 20, (new), (old), lcp->deltamode)
+ MC_(snprintf_delta) (d_bytes, sizeof(d_bytes), (new), (old), \
+ lcp->deltamode)
# define DBL(new,old) \
- MC_(snprintf_delta) (d_blocks, 20, (new), (old), lcp->deltamode)
+ MC_(snprintf_delta) (d_blocks, sizeof(d_blocks), (new), (old), \
+ lcp->deltamode)
VG_(umsg)("LEAK SUMMARY:\n");
VG_(umsg)(" definitely lost: %'lu%s bytes in %'lu%s blocks\n",