diff options
-rw-r--r-- | include/rtl/strbuf.hxx | 20 | ||||
-rw-r--r-- | include/rtl/ustrbuf.hxx | 20 |
2 files changed, 24 insertions, 16 deletions
diff --git a/include/rtl/strbuf.hxx b/include/rtl/strbuf.hxx index e5ae1ebd0a7b..cb842bb5839e 100644 --- a/include/rtl/strbuf.hxx +++ b/include/rtl/strbuf.hxx @@ -756,8 +756,7 @@ public: */ OStringBuffer & append(float f) { - char sz[RTL_STR_MAX_VALUEOFFLOAT]; - return append( sz, rtl_str_valueOfFloat( sz, f ) ); + return insert(getLength(), f); } /** @@ -773,8 +772,7 @@ public: */ OStringBuffer & append(double d) { - char sz[RTL_STR_MAX_VALUEOFDOUBLE]; - return append( sz, rtl_str_valueOfDouble( sz, d ) ); + return insert(getLength(), d); } /** @@ -1032,8 +1030,11 @@ public: */ OStringBuffer & insert(sal_Int32 offset, float f) { - char sz[RTL_STR_MAX_VALUEOFFLOAT]; - return insert( offset, sz, rtl_str_valueOfFloat( sz, f ) ); + // Same as rtl::str::valueOfFP, used for rtl_str_valueOfFloat + rtl_math_doubleToString(&pData, &nCapacity, offset, f, rtl_math_StringFormat_G, + RTL_STR_MAX_VALUEOFFLOAT - SAL_N_ELEMENTS("-x.E-xxx") + 1, '.', + NULL, 0, true); + return *this; } /** @@ -1055,8 +1056,11 @@ public: */ OStringBuffer & insert(sal_Int32 offset, double d) { - char sz[RTL_STR_MAX_VALUEOFDOUBLE]; - return insert( offset, sz, rtl_str_valueOfDouble( sz, d ) ); + // Same as rtl::str::valueOfFP, used for rtl_str_valueOfDouble + rtl_math_doubleToString(&pData, &nCapacity, offset, d, rtl_math_StringFormat_G, + RTL_STR_MAX_VALUEOFDOUBLE - SAL_N_ELEMENTS("-x.E-xxx") + 1, '.', + NULL, 0, true); + return *this; } /** diff --git a/include/rtl/ustrbuf.hxx b/include/rtl/ustrbuf.hxx index 363b4f24757f..227eed842443 100644 --- a/include/rtl/ustrbuf.hxx +++ b/include/rtl/ustrbuf.hxx @@ -916,8 +916,7 @@ public: */ OUStringBuffer & append(float f) { - sal_Unicode sz[RTL_USTR_MAX_VALUEOFFLOAT]; - return append( sz, rtl_ustr_valueOfFloat( sz, f ) ); + return insert(getLength(), f); } /** @@ -933,8 +932,7 @@ public: */ OUStringBuffer & append(double d) { - sal_Unicode sz[RTL_USTR_MAX_VALUEOFDOUBLE]; - return append( sz, rtl_ustr_valueOfDouble( sz, d ) ); + return insert(getLength(), d); } /** @@ -1288,8 +1286,11 @@ public: */ OUStringBuffer & insert(sal_Int32 offset, float f) { - sal_Unicode sz[RTL_USTR_MAX_VALUEOFFLOAT]; - return insert( offset, sz, rtl_ustr_valueOfFloat( sz, f ) ); + // Same as rtl::str::valueOfFP, used for rtl_ustr_valueOfFloat + rtl_math_doubleToUString(&pData, &nCapacity, offset, f, rtl_math_StringFormat_G, + RTL_USTR_MAX_VALUEOFFLOAT - SAL_N_ELEMENTS("-x.E-xxx") + 1, '.', + NULL, 0, true); + return *this; } /** @@ -1312,8 +1313,11 @@ public: */ OUStringBuffer & insert(sal_Int32 offset, double d) { - sal_Unicode sz[RTL_USTR_MAX_VALUEOFDOUBLE]; - return insert( offset, sz, rtl_ustr_valueOfDouble( sz, d ) ); + // Same as rtl::str::valueOfFP, used for rtl_ustr_valueOfDouble + rtl_math_doubleToUString(&pData, &nCapacity, offset, d, rtl_math_StringFormat_G, + RTL_USTR_MAX_VALUEOFDOUBLE - SAL_N_ELEMENTS("-x.E-xxx") + 1, '.', + NULL, 0, true); + return *this; } /** |