summaryrefslogtreecommitdiff
path: root/indra/llcommon/llformat.cpp
diff options
context:
space:
mode:
authorMike Antipov <mantipov@productengine.com>2010-07-23 10:26:28 +0300
committerMike Antipov <mantipov@productengine.com>2010-07-23 10:26:28 +0300
commit3c4f82b2984c0cf70b2bc61190495cf9cf1a6aad (patch)
tree54e39bcaa704c80d9ad2c99d74928f91ea50b74e /indra/llcommon/llformat.cpp
parentf6c08d45108d713fc42786885d1d38a4b95c10ac (diff)
EXT-8318 ADDITIONAL FIXED ensure that thousands separator is in utf8 format (on Windows) before converting it to LLWString.
Problem on Windows: ================== LLPanelMainInventory::updateItemcountText() formats number using viewer locale. non-break space is detected as unknown symbols while converting utf8str_to_wstring when formatted text is set to LLTextBox. FIX: === Added converting of string to multi-byte string and then to utf8 string while formatting on Windows. created opposite to "ll_convert_wide_to_string" function "ll_convert_string_to_wide" and helper function to call both of them. It is used now to convert result of formatted string while formatting integer number in locale. Fix affects Windows only. Reviewed by Richard Nelson at https://codereview.productengine.com/secondlife/r/775/ --HG-- branch : product-engine
Diffstat (limited to 'indra/llcommon/llformat.cpp')
-rw-r--r--indra/llcommon/llformat.cpp32
1 files changed, 28 insertions, 4 deletions
diff --git a/indra/llcommon/llformat.cpp b/indra/llcommon/llformat.cpp
index cf509bee14..689f649d0a 100644
--- a/indra/llcommon/llformat.cpp
+++ b/indra/llcommon/llformat.cpp
@@ -37,16 +37,40 @@
#include <cstdarg>
-std::string llformat(const char *fmt, ...)
+// common used function with va_list argument
+// wrapper for vsnprintf to be called from llformatXXX functions.
+static void va_format(std::string& out, const char *fmt, va_list va)
{
char tstr[1024]; /* Flawfinder: ignore */
- va_list va;
- va_start(va, fmt);
#if LL_WINDOWS
_vsnprintf(tstr, 1024, fmt, va);
#else
vsnprintf(tstr, 1024, fmt, va); /* Flawfinder: ignore */
#endif
+ out.assign(tstr);
+}
+
+std::string llformat(const char *fmt, ...)
+{
+ std::string res;
+ va_list va;
+ va_start(va, fmt);
+ va_format(res, fmt, va);
va_end(va);
- return std::string(tstr);
+ return res;
+}
+
+std::string llformat_to_utf8(const char *fmt, ...)
+{
+ std::string res;
+ va_list va;
+ va_start(va, fmt);
+ va_format(res, fmt, va);
+ va_end(va);
+
+#if LL_WINDOWS
+ // made converting to utf8. See EXT-8318.
+ res = ll_convert_string_to_utf8_string(res);
+#endif
+ return res;
}