Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Oeser <info@graphics-engineer.com>2018-11-19 17:24:32 +0300
committerPhilipp Oeser <info@graphics-engineer.com>2018-11-21 18:34:32 +0300
commitcec83e92e6160adf1e39e0173c77743cb1ff1be7 (patch)
tree1ff09e025d910d63af6f0716cc26e4f015e56d29 /source/blender/blenlib/intern
parentd3e686d61eb93aed5487c4037d7675cf811039a1 (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.c48
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).