summaryrefslogtreecommitdiff
path: root/Build/source/libs/icu/icu-src/source/io/sprintf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/icu/icu-src/source/io/sprintf.cpp')
-rw-r--r--Build/source/libs/icu/icu-src/source/io/sprintf.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-src/source/io/sprintf.cpp b/Build/source/libs/icu/icu-src/source/io/sprintf.cpp
index 3a593abb480..ede31e91517 100644
--- a/Build/source/libs/icu/icu-src/source/io/sprintf.cpp
+++ b/Build/source/libs/icu/icu-src/source/io/sprintf.cpp
@@ -41,6 +41,12 @@ u_sprintf_write(void *context,
int32_t count)
{
u_localized_print_string *output = (u_localized_print_string *)context;
+
+ /* just calculating buffer size */
+ if (output->str == 0) {
+ return count;
+ }
+
int32_t size = ufmt_min(count, output->available);
u_strncpy(output->str + (output->len - output->available), str, size);
@@ -58,6 +64,12 @@ u_sprintf_pad_and_justify(void *context,
int32_t written = 0;
int32_t lengthOfResult = resultLen;
+ /* just calculating buffer size */
+ if (output->str == 0 &&
+ info->fWidth != -1 && resultLen < info->fWidth) {
+ return info->fWidth;
+ }
+
resultLen = ufmt_min(resultLen, output->available);
/* pad and justify, if needed */