diff options
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.cpp | 12 |
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 */ |