diff options
author | Philipp Oeser <info@graphics-engineer.com> | 2018-11-19 17:24:32 +0300 |
---|---|---|
committer | Philipp Oeser <info@graphics-engineer.com> | 2018-11-21 18:34:32 +0300 |
commit | cec83e92e6160adf1e39e0173c77743cb1ff1be7 (patch) | |
tree | 1ff09e025d910d63af6f0716cc26e4f015e56d29 /source/blender/blenlib/intern | |
parent | d3e686d61eb93aed5487c4037d7675cf811039a1 (diff) |
Fix T57884: Triangle count is incorrect when above around 2 billion
Maniphest Tasks: T57884
Differential Revision: https://developer.blender.org/D3962
Diffstat (limited to 'source/blender/blenlib/intern')
-rw-r--r-- | source/blender/blenlib/intern/string.c | 48 |
1 files changed, 35 insertions, 13 deletions
diff --git a/source/blender/blenlib/intern/string.c b/source/blender/blenlib/intern/string.c index 938728aa4bb..3deab9b2ae9 100644 --- a/source/blender/blenlib/intern/string.c +++ b/source/blender/blenlib/intern/string.c @@ -35,6 +35,7 @@ #include <stdlib.h> #include <stdarg.h> #include <ctype.h> +#include <inttypes.h> #include "MEM_guardedalloc.h" @@ -975,24 +976,13 @@ size_t BLI_str_partition_ex( return end ? (size_t)(end - str) : strlen(str); } -/** - * Format ints with decimal grouping. - * 1000 -> 1,000 - * - * \param dst The resulting string - * \param num Number to format - * \return The length of \a dst - */ -size_t BLI_str_format_int_grouped(char dst[16], int num) +size_t BLI_str_format_int_grouped_ex(char src[16], char dst[16], int num_len) { - char src[16]; char *p_src = src; char *p_dst = dst; const char separator = ','; - int num_len, commas; - - num_len = sprintf(src, "%d", num); + int commas; if (*p_src == '-') { *p_dst++ = *p_src++; @@ -1011,6 +1001,38 @@ size_t BLI_str_format_int_grouped(char dst[16], int num) } /** + * Format ints with decimal grouping. + * 1000 -> 1,000 + * + * \param dst The resulting string + * \param num Number to format + * \return The length of \a dst + */ +size_t BLI_str_format_int_grouped(char dst[16], int num) +{ + char src[16]; + int num_len = sprintf(src, "%d", num); + + return BLI_str_format_int_grouped_ex(src, dst, num_len); +} + +/** + * Format uint64_t with decimal grouping. + * 1000 -> 1,000 + * + * \param dst The resulting string + * \param num Number to format + * \return The length of \a dst + */ +size_t BLI_str_format_uint64_grouped(char dst[16], uint64_t num) +{ + char src[16]; + int num_len = sprintf(src, "%"PRIu64"",num); + + return BLI_str_format_int_grouped_ex(src, dst, num_len); +} + +/** * Format a size in bytes using binary units. * 1000 -> 1 KB * Number of decimal places grows with the used unit (e.g. 1.5 MB, 1.55 GB, 1.545 TB). |