connectivity/source/drivers/flat/ETable.cxx               |    2 
 framework/source/uielement/spinfieldtoolbarcontroller.cxx |   16 ++--
 include/rtl/string.hxx                                    |   33 +++++----
 include/rtl/ustring.hxx                                   |   33 +++++----
 oox/source/export/drawingml.cxx                           |   50 +++++++-------
 sal/qa/rtl/oustring/rtl_OUString2.cxx                     |    4 -
 sal/qa/rtl/strings/test_ostring_concat.cxx                |    4 -
 sal/qa/rtl/strings/test_oustring_concat.cxx               |    4 -
 8 files changed, 80 insertions(+), 66 deletions(-)

New commits:
commit 8b6d167608d74986e97d462fde8efcae4c28b564
Author:     Mike Kaganski <[email protected]>
AuthorDate: Mon Apr 10 11:15:02 2023 +0200
Commit:     Mike Kaganski <[email protected]>
CommitDate: Mon Apr 10 16:36:09 2023 +0200

    Use of O(U)StringNumber for float/double is actually a pessimisation
    
    They use rtl_(u)str_valueOf(Float|Double), to fill the buffer, and
    the latter use doubleToString, which creates an rtl_(u)String, copies
    to the buffer, and releases the rtl_(u)String.
    
    So instead just use the rtl_(u)String from rtl_math_doubleTo(U)String
    directly. Even when the end result is not needed as O(U)String, this
    would avoid an extra copy step. Also, this avoids separate
    LIBO_INTERNAL_ONLY implementations.
    
    Change-Id: Ib1d9ecebd7876dfff7dc758f89ee4c1536647a50
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150150
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <[email protected]>

diff --git a/connectivity/source/drivers/flat/ETable.cxx 
b/connectivity/source/drivers/flat/ETable.cxx
index 38cf9296bfe7..9cab6b13da5a 100644
--- a/connectivity/source/drivers/flat/ETable.cxx
+++ b/connectivity/source/drivers/flat/ETable.cxx
@@ -660,7 +660,7 @@ bool OFlatTable::fetchRow(OValueRefRow& _rRow, const 
OSQLColumns & _rCols, bool
 
                     // #99178# OJ
                     if ( DataType::DECIMAL == nType || DataType::NUMERIC == 
nType )
-                        *(*_rRow)[i] = OUString(OUString::number(nVal));
+                        *(*_rRow)[i] = OUString::number(nVal);
                     else
                         *(*_rRow)[i] = nVal;
                 } break;
diff --git a/framework/source/uielement/spinfieldtoolbarcontroller.cxx 
b/framework/source/uielement/spinfieldtoolbarcontroller.cxx
index ce74c9041ef9..9ba295f30932 100644
--- a/framework/source/uielement/spinfieldtoolbarcontroller.cxx
+++ b/framework/source/uielement/spinfieldtoolbarcontroller.cxx
@@ -256,7 +256,7 @@ void SpinfieldToolbarController::executeControlCommand( 
const css::frame::Contro
                 double      fValue;
                 bool        bFloat( false );
                 if ( impl_getValue( arg.Value, nValue, fValue, bFloat ))
-                    aStep = bFloat ? OUString( OUString::number( fValue )) :
+                    aStep = bFloat ? OUString::number( fValue ) :
                                      OUString( OUString::number( nValue ));
                 break;
             }
@@ -274,7 +274,7 @@ void SpinfieldToolbarController::executeControlCommand( 
const css::frame::Contro
 
                 if ( impl_getValue( arg.Value, nValue, fValue, bFloat ))
                 {
-                    aValue = bFloat ? OUString( OUString::number( fValue )) :
+                    aValue = bFloat ? OUString::number( fValue ) :
                                       OUString( OUString::number( nValue ));
                     bFloatValue = bFloat;
                 }
@@ -295,18 +295,18 @@ void SpinfieldToolbarController::executeControlCommand( 
const css::frame::Contro
             {
                 if ( aName == "Value" )
                 {
-                    aValue = bFloat ? OUString( OUString::number( fValue )) :
+                    aValue = bFloat ? OUString::number( fValue ) :
                                       OUString( OUString::number( nValue ));
                     bFloatValue = bFloat;
                 }
                 else if ( aName == "Step" )
-                    aStep = bFloat ? OUString( OUString::number( fValue )) :
+                    aStep = bFloat ? OUString::number( fValue ) :
                                      OUString( OUString::number( nValue ));
                 else if ( aName == "LowerLimit" )
-                    aMin = bFloat ? OUString( OUString::number( fValue )) :
+                    aMin = bFloat ? OUString::number( fValue ) :
                                     OUString( OUString::number( nValue ));
                 else if ( aName == "UpperLimit" )
-                    aMax = bFloat ? OUString( OUString::number( fValue )) :
+                    aMax = bFloat ? OUString::number( fValue ) :
                                     OUString( OUString::number( nValue ));
             }
             else if ( aName == "OutputFormat" )
@@ -323,7 +323,7 @@ void SpinfieldToolbarController::executeControlCommand( 
const css::frame::Contro
                 double      fValue;
                 bool        bFloat( false );
                 if ( impl_getValue( arg.Value, nValue, fValue, bFloat ))
-                    aMin = bFloat ? OUString( OUString::number( fValue )) :
+                    aMin = bFloat ? OUString::number( fValue ) :
                                     OUString( OUString::number( nValue ));
                 break;
             }
@@ -339,7 +339,7 @@ void SpinfieldToolbarController::executeControlCommand( 
const css::frame::Contro
                 double      fValue;
                 bool        bFloat( false );
                 if ( impl_getValue( arg.Value, nValue, fValue, bFloat ))
-                    aMax = bFloat ? OUString( OUString::number( fValue )) :
+                    aMax = bFloat ? OUString::number( fValue ) :
                                     OUString( OUString::number( nValue ));
                 break;
             }
diff --git a/include/rtl/string.hxx b/include/rtl/string.hxx
index 5b01df33e71f..091f224b25d6 100644
--- a/include/rtl/string.hxx
+++ b/include/rtl/string.hxx
@@ -40,6 +40,7 @@
 #include <type_traits>
 #endif
 
+#include "rtl/math.h"
 #include "rtl/textenc.h"
 #include "rtl/string.h"
 #include "rtl/stringutils.hxx"
@@ -2021,14 +2022,6 @@ public:
     {
         return number( static_cast< unsigned long long >( i ), radix );
     }
-    static auto number( float f )
-    {
-        return OStringNumber<RTL_STR_MAX_VALUEOFFLOAT>(rtl_str_valueOfFloat, 
f);
-    }
-    static auto number( double d )
-    {
-        return OStringNumber<RTL_STR_MAX_VALUEOFDOUBLE>(rtl_str_valueOfDouble, 
d);
-    }
 #else
     /**
       Returns the string representation of the integer argument.
@@ -2077,6 +2070,7 @@ public:
         char aBuf[RTL_STR_MAX_VALUEOFUINT64];
         return OString(aBuf, rtl_str_valueOfUInt64(aBuf, ll, radix));
     }
+#endif
 
     /**
       Returns the string representation of the float argument.
@@ -2089,8 +2083,15 @@ public:
     */
     static OString number( float f )
     {
-        char aBuf[RTL_STR_MAX_VALUEOFFLOAT];
-        return OString(aBuf, rtl_str_valueOfFloat(aBuf, f));
+        rtl_String* pNew = NULL;
+        // Same as rtl::str::valueOfFP, used for rtl_str_valueOfFloat
+        rtl_math_doubleToString(&pNew, NULL, 0, f, rtl_math_StringFormat_G,
+                                RTL_STR_MAX_VALUEOFFLOAT - 
SAL_N_ELEMENTS("-x.E-xxx") + 1, '.',
+                                NULL, 0, true);
+        if (pNew == NULL)
+            throw std::bad_alloc();
+
+        return OString(pNew, SAL_NO_ACQUIRE);
     }
 
     /**
@@ -2104,10 +2105,16 @@ public:
     */
     static OString number( double d )
     {
-        char aBuf[RTL_STR_MAX_VALUEOFDOUBLE];
-        return OString(aBuf, rtl_str_valueOfDouble(aBuf, d));
+        rtl_String* pNew = NULL;
+        // Same as rtl::str::valueOfFP, used for rtl_str_valueOfDouble
+        rtl_math_doubleToString(&pNew, NULL, 0, d, rtl_math_StringFormat_G,
+                                RTL_STR_MAX_VALUEOFDOUBLE - 
SAL_N_ELEMENTS("-x.E-xxx") + 1, '.',
+                                NULL, 0, true);
+        if (pNew == NULL)
+            throw std::bad_alloc();
+
+        return OString(pNew, SAL_NO_ACQUIRE);
     }
-#endif
 
 #ifdef LIBO_INTERNAL_ONLY // "RTL_FAST_STRING"
     static auto boolean(bool b)
diff --git a/include/rtl/ustring.hxx b/include/rtl/ustring.hxx
index a87082aacfff..263cb71d74c9 100644
--- a/include/rtl/ustring.hxx
+++ b/include/rtl/ustring.hxx
@@ -39,6 +39,7 @@
 #include <type_traits>
 #endif
 
+#include "rtl/math.h"
 #include "rtl/ustring.h"
 #include "rtl/string.hxx"
 #include "rtl/stringutils.hxx"
@@ -3082,14 +3083,6 @@ public:
     {
         return number( static_cast< unsigned long long >( i ), radix );
     }
-    static auto number( float f )
-    {
-        return 
OUStringNumber<RTL_USTR_MAX_VALUEOFFLOAT>(rtl_ustr_valueOfFloat, f);
-    }
-    static auto number( double d )
-    {
-        return 
OUStringNumber<RTL_USTR_MAX_VALUEOFDOUBLE>(rtl_ustr_valueOfDouble, d);
-    }
 #else
     /**
       Returns the string representation of the integer argument.
@@ -3138,6 +3131,7 @@ public:
         sal_Unicode aBuf[RTL_USTR_MAX_VALUEOFUINT64];
         return OUString(aBuf, rtl_ustr_valueOfUInt64(aBuf, ll, radix));
     }
+#endif
 
     /**
       Returns the string representation of the float argument.
@@ -3150,8 +3144,15 @@ public:
     */
     static OUString number( float f )
     {
-        sal_Unicode aBuf[RTL_USTR_MAX_VALUEOFFLOAT];
-        return OUString(aBuf, rtl_ustr_valueOfFloat(aBuf, f));
+        rtl_uString* pNew = NULL;
+        // Same as rtl::str::valueOfFP, used for rtl_ustr_valueOfFloat
+        rtl_math_doubleToUString(&pNew, NULL, 0, f, rtl_math_StringFormat_G,
+                                 RTL_USTR_MAX_VALUEOFFLOAT - 
SAL_N_ELEMENTS("-x.E-xxx") + 1, '.',
+                                 NULL, 0, true);
+        if (pNew == NULL)
+            throw std::bad_alloc();
+
+        return OUString(pNew, SAL_NO_ACQUIRE);
     }
 
     /**
@@ -3165,10 +3166,16 @@ public:
     */
     static OUString number( double d )
     {
-        sal_Unicode aBuf[RTL_USTR_MAX_VALUEOFDOUBLE];
-        return OUString(aBuf, rtl_ustr_valueOfDouble(aBuf, d));
+        rtl_uString* pNew = NULL;
+        // Same as rtl::str::valueOfFP, used for rtl_ustr_valueOfDouble
+        rtl_math_doubleToUString(&pNew, NULL, 0, d, rtl_math_StringFormat_G,
+                                 RTL_USTR_MAX_VALUEOFDOUBLE - 
SAL_N_ELEMENTS("-x.E-xxx") + 1, '.',
+                                 NULL, 0, true);
+        if (pNew == NULL)
+            throw std::bad_alloc();
+
+        return OUString(pNew, SAL_NO_ACQUIRE);
     }
-#endif
 
 #ifdef LIBO_INTERNAL_ONLY // "RTL_FAST_STRING"
     static auto boolean(bool b)
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 270d961d6d5a..3700d93f78fc 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -723,7 +723,7 @@ void DrawingML::WriteGrabBagGradientFill( const Sequence< 
PropertyValue >& aGrad
                 rProp.Value >>= aTransformations;
         }
         // write stop
-        mpFS->startElementNS(XML_a, XML_gs, XML_pos, OString::number(nPos * 
100000.0).getStr());
+        mpFS->startElementNS(XML_a, XML_gs, XML_pos, OString::number(nPos * 
100000.0));
         if( sSchemeClr.isEmpty() )
         {
             // Calculate alpha value (see oox/source/drawingml/color.cxx : 
getTransparency())
@@ -2836,7 +2836,7 @@ void DrawingML::WriteRun( const Reference< XTextRange >& 
rRun,
         {
             mpFS->startElementNS(XML_a, XML_br);
             mpFS->singleElementNS(XML_a, XML_rPr, XML_sz,
-                                  OString::number(nFontSize * 100).getStr());
+                                  OString::number(nFontSize * 100));
             mpFS->endElementNS(XML_a, XML_br);
         }
         else
@@ -5306,91 +5306,91 @@ void DrawingML::WriteShapeEffect( std::u16string_view 
sName, const Sequence< Pro
                 {
                     sal_Int64 nVal = 0;
                     rOuterShdwProp.Value >>= nVal;
-                    aOuterShdwAttrList->add( XML_blurRad, OString::number( 
nVal ).getStr() );
+                    aOuterShdwAttrList->add( XML_blurRad, OString::number( 
nVal ) );
                 }
                 else if( rOuterShdwProp.Name == "dir" )
                 {
                     sal_Int32 nVal = 0;
                     rOuterShdwProp.Value >>= nVal;
-                    aOuterShdwAttrList->add( XML_dir, OString::number( nVal 
).getStr() );
+                    aOuterShdwAttrList->add( XML_dir, OString::number( nVal ) 
);
                 }
                 else if( rOuterShdwProp.Name == "dist" )
                 {
                     sal_Int32 nVal = 0;
                     rOuterShdwProp.Value >>= nVal;
-                    aOuterShdwAttrList->add( XML_dist, OString::number( nVal 
).getStr() );
+                    aOuterShdwAttrList->add( XML_dist, OString::number( nVal ) 
);
                 }
                 else if( rOuterShdwProp.Name == "kx" )
                 {
                     sal_Int32 nVal = 0;
                     rOuterShdwProp.Value >>= nVal;
-                    aOuterShdwAttrList->add( XML_kx, OString::number( nVal 
).getStr() );
+                    aOuterShdwAttrList->add( XML_kx, OString::number( nVal ) );
                 }
                 else if( rOuterShdwProp.Name == "ky" )
                 {
                     sal_Int32 nVal = 0;
                     rOuterShdwProp.Value >>= nVal;
-                    aOuterShdwAttrList->add( XML_ky, OString::number( nVal 
).getStr() );
+                    aOuterShdwAttrList->add( XML_ky, OString::number( nVal ) );
                 }
                 else if( rOuterShdwProp.Name == "rotWithShape" )
                 {
                     sal_Int32 nVal = 0;
                     rOuterShdwProp.Value >>= nVal;
-                    aOuterShdwAttrList->add( XML_rotWithShape, 
OString::number( nVal ).getStr() );
+                    aOuterShdwAttrList->add( XML_rotWithShape, 
OString::number( nVal ) );
                 }
                 else if( rOuterShdwProp.Name == "sx" )
                 {
                     sal_Int32 nVal = 0;
                     rOuterShdwProp.Value >>= nVal;
-                    aOuterShdwAttrList->add( XML_sx, OString::number( nVal 
).getStr() );
+                    aOuterShdwAttrList->add( XML_sx, OString::number( nVal ) );
                 }
                 else if( rOuterShdwProp.Name == "sy" )
                 {
                     sal_Int32 nVal = 0;
                     rOuterShdwProp.Value >>= nVal;
-                    aOuterShdwAttrList->add( XML_sy, OString::number( nVal 
).getStr() );
+                    aOuterShdwAttrList->add( XML_sy, OString::number( nVal ) );
                 }
                 else if( rOuterShdwProp.Name == "rad" )
                 {
                     sal_Int64 nVal = 0;
                     rOuterShdwProp.Value >>= nVal;
-                    aOuterShdwAttrList->add( XML_rad, OString::number( nVal 
).getStr() );
+                    aOuterShdwAttrList->add( XML_rad, OString::number( nVal ) 
);
                 }
                 else if( rOuterShdwProp.Name == "endA" )
                 {
                     sal_Int32 nVal = 0;
                     rOuterShdwProp.Value >>= nVal;
-                    aOuterShdwAttrList->add( XML_endA, OString::number( nVal 
).getStr() );
+                    aOuterShdwAttrList->add( XML_endA, OString::number( nVal ) 
);
                 }
                 else if( rOuterShdwProp.Name == "endPos" )
                 {
                     sal_Int32 nVal = 0;
                     rOuterShdwProp.Value >>= nVal;
-                    aOuterShdwAttrList->add( XML_endPos, OString::number( nVal 
).getStr() );
+                    aOuterShdwAttrList->add( XML_endPos, OString::number( nVal 
) );
                 }
                 else if( rOuterShdwProp.Name == "fadeDir" )
                 {
                     sal_Int32 nVal = 0;
                     rOuterShdwProp.Value >>= nVal;
-                    aOuterShdwAttrList->add( XML_fadeDir, OString::number( 
nVal ).getStr() );
+                    aOuterShdwAttrList->add( XML_fadeDir, OString::number( 
nVal ) );
                 }
                 else if( rOuterShdwProp.Name == "stA" )
                 {
                     sal_Int32 nVal = 0;
                     rOuterShdwProp.Value >>= nVal;
-                    aOuterShdwAttrList->add( XML_stA, OString::number( nVal 
).getStr() );
+                    aOuterShdwAttrList->add( XML_stA, OString::number( nVal ) 
);
                 }
                 else if( rOuterShdwProp.Name == "stPos" )
                 {
                     sal_Int32 nVal = 0;
                     rOuterShdwProp.Value >>= nVal;
-                    aOuterShdwAttrList->add( XML_stPos, OString::number( nVal 
).getStr() );
+                    aOuterShdwAttrList->add( XML_stPos, OString::number( nVal 
) );
                 }
                 else if( rOuterShdwProp.Name == "grow" )
                 {
                     sal_Int32 nVal = 0;
                     rOuterShdwProp.Value >>= nVal;
-                    aOuterShdwAttrList->add( XML_grow, OString::number( nVal 
).getStr() );
+                    aOuterShdwAttrList->add( XML_grow, OString::number( nVal ) 
);
                 }
             }
         }
@@ -5679,13 +5679,13 @@ void DrawingML::Write3DEffects( const Reference< 
XPropertySet >& xPropSet, bool
         {
             float fVal = 0;
             rEffectProp.Value >>= fVal;
-            aCameraAttrList->add( XML_fov, OString::number( fVal * 60000 
).getStr() );
+            aCameraAttrList->add( XML_fov, OString::number( fVal * 60000 ) );
         }
         else if( rEffectProp.Name == "zoom" )
         {
             float fVal = 1;
             rEffectProp.Value >>= fVal;
-            aCameraAttrList->add( XML_zoom, OString::number( fVal * 100000 
).getStr() );
+            aCameraAttrList->add( XML_zoom, OString::number( fVal * 100000 ) );
         }
         else if( rEffectProp.Name == "rotLat" ||
                 rEffectProp.Name == "rotLon" ||
@@ -5699,7 +5699,7 @@ void DrawingML::Write3DEffects( const Reference< 
XPropertySet >& xPropSet, bool
                 nToken = XML_lon;
             else if( rEffectProp.Name == "rotRev" )
                 nToken = XML_rev;
-            aCameraRotationAttrList->add( nToken, OString::number( nVal 
).getStr() );
+            aCameraRotationAttrList->add( nToken, OString::number( nVal ) );
             bCameraRotationPresent = true;
         }
     }
@@ -5732,7 +5732,7 @@ void DrawingML::Write3DEffects( const Reference< 
XPropertySet >& xPropSet, bool
                 nToken = XML_lon;
             else if( rLightRigProp.Name == "rotRev" )
                 nToken = XML_rev;
-            aLightRigRotationAttrList->add( nToken, OString::number( nVal 
).getStr() );
+            aLightRigRotationAttrList->add( nToken, OString::number( nVal ) );
             bLightRigRotationPresent = true;
         }
     }
@@ -5791,7 +5791,7 @@ void DrawingML::Write3DEffects( const Reference< 
XPropertySet >& xPropSet, bool
                 nToken = XML_contourW;
             else if( rShape3DProp.Name == "z" )
                 nToken = XML_z;
-            aShape3DAttrList->add( nToken, OString::number( nVal ).getStr() );
+            aShape3DAttrList->add( nToken, OString::number( nVal ) );
         }
         else if( rShape3DProp.Name == "prstMaterial" )
         {
@@ -5835,7 +5835,7 @@ void DrawingML::Write3DEffects( const Reference< 
XPropertySet >& xPropSet, bool
                         nToken = XML_w;
                     else if( rBevelProp.Name == "h" )
                         nToken = XML_h;
-                    aBevelAttrList->add( nToken, OString::number( nVal 
).getStr() );
+                    aBevelAttrList->add( nToken, OString::number( nVal ) );
                 }
                 else  if( rBevelProp.Name == "prst" )
                 {
@@ -5939,7 +5939,7 @@ void DrawingML::WriteArtisticEffect( const Reference< 
XPropertySet >& rXPropSet
         {
             sal_Int32 nVal = 0;
             rAttr.Value >>= nVal;
-            aAttrList->add( nToken, OString::number( nVal ).getStr() );
+            aAttrList->add( nToken, OString::number( nVal ) );
         }
         else if( rAttr.Name == "OriginalGraphic" )
         {
@@ -6049,7 +6049,7 @@ void DrawingML::WriteDiagram(const 
css::uno::Reference<css::drawing::XShape>& rX
     // generate a unique id
     rtl::Reference<sax_fastparser::FastAttributeList> pDocPrAttrList
         = sax_fastparser::FastSerializerHelper::createAttrList();
-    pDocPrAttrList->add(XML_id, OString::number(nDiagramId).getStr());
+    pDocPrAttrList->add(XML_id, OString::number(nDiagramId));
     OString sName = "Diagram" + OString::number(nDiagramId);
     pDocPrAttrList->add(XML_name, sName);
 
diff --git a/sal/qa/rtl/oustring/rtl_OUString2.cxx 
b/sal/qa/rtl/oustring/rtl_OUString2.cxx
index 22e731fd16f1..1340b262642b 100644
--- a/sal/qa/rtl/oustring/rtl_OUString2.cxx
+++ b/sal/qa/rtl/oustring/rtl_OUString2.cxx
@@ -866,11 +866,11 @@ public:
         std::unique_ptr<OUString[]> pStrs(new OUString[nSequence]);
         for (i = 0; i < nSequence; i++)
         {
-            pStrs[i] = OUString( OUString::number( sqrt( 
static_cast<double>(i) ) ) ).intern();
+            pStrs[i] = OUString::number( sqrt( static_cast<double>(i) ) 
).intern();
         }
         for (i = 0; i < nSequence; i++)
         {
-            OUString aNew = OUString( OUString::number( sqrt( 
static_cast<double>(i) ) ) ).intern();
+            OUString aNew = OUString::number( sqrt( static_cast<double>(i) ) 
).intern();
             CPPUNIT_ASSERT_EQUAL_MESSAGE("double intern failed",
                                    pStrs[i].pData, aNew.pData);
         }
diff --git a/sal/qa/rtl/strings/test_ostring_concat.cxx 
b/sal/qa/rtl/strings/test_ostring_concat.cxx
index 0ad7842d56ba..11bf8ebf80af 100644
--- a/sal/qa/rtl/strings/test_ostring_concat.cxx
+++ b/sal/qa/rtl/strings/test_ostring_concat.cxx
@@ -113,9 +113,9 @@ void test::ostring::StringConcat::checkConcat()
     CPPUNIT_ASSERT_EQUAL( OString( "num10" ), OString( OString( "num" ) + 
OString::number( 10ULL )));
     CPPUNIT_ASSERT_EQUAL(( typeid( OStringConcat< OString, StringNumber< char, 
RTL_STR_MAX_VALUEOFUINT64 > > )), typeid( OString( "num" ) + OString::number( 
10ULL )));
     CPPUNIT_ASSERT_EQUAL( OString( "num10.5" ), OString( OString( "num" ) + 
OString::number( 10.5f )));
-    CPPUNIT_ASSERT_EQUAL(( typeid( OStringConcat< OString, StringNumber< char, 
RTL_STR_MAX_VALUEOFFLOAT > > )), typeid( OString( "num" ) + OString::number( 
10.5f )));
+    CPPUNIT_ASSERT_EQUAL(( typeid( OStringConcat< OString, OString > )), 
typeid( OString( "num" ) + OString::number( 10.5f )));
     CPPUNIT_ASSERT_EQUAL( OString( "num10.5" ), OString( OString( "num" ) + 
OString::number( 10.5 )));
-    CPPUNIT_ASSERT_EQUAL(( typeid( OStringConcat< OString, StringNumber< char, 
RTL_STR_MAX_VALUEOFDOUBLE > > )), typeid( OString( "num" ) + OString::number( 
10.5 )));
+    CPPUNIT_ASSERT_EQUAL(( typeid( OStringConcat< OString, OString > )), 
typeid( OString( "num" ) + OString::number( 10.5 )));
 }
 
 void test::ostring::StringConcat::checkEnsureCapacity()
diff --git a/sal/qa/rtl/strings/test_oustring_concat.cxx 
b/sal/qa/rtl/strings/test_oustring_concat.cxx
index 6c2ee435e31a..7e69db26ed4e 100644
--- a/sal/qa/rtl/strings/test_oustring_concat.cxx
+++ b/sal/qa/rtl/strings/test_oustring_concat.cxx
@@ -98,9 +98,9 @@ void test::oustring::StringConcat::checkConcat()
     CPPUNIT_ASSERT_EQUAL( OUString( "num10" ), OUString( OUString( "num" ) + 
OUString::number( 10ULL )));
     CPPUNIT_ASSERT_EQUAL(( typeid( OUStringConcat< OUString, StringNumber< 
sal_Unicode, RTL_USTR_MAX_VALUEOFUINT64 > > )), typeid( OUString( "num" ) + 
OUString::number( 10ULL )));
     CPPUNIT_ASSERT_EQUAL( OUString( "num10.5" ), OUString( OUString( "num" ) + 
OUString::number( 10.5f )));
-    CPPUNIT_ASSERT_EQUAL(( typeid( OUStringConcat< OUString, StringNumber< 
sal_Unicode, RTL_USTR_MAX_VALUEOFFLOAT > > )), typeid( OUString( "num" ) + 
OUString::number( 10.5f )));
+    CPPUNIT_ASSERT_EQUAL(( typeid( OUStringConcat< OUString, OUString > )), 
typeid( OUString( "num" ) + OUString::number( 10.5f )));
     CPPUNIT_ASSERT_EQUAL( OUString( "num10.5" ), OUString( OUString( "num" ) + 
OUString::number( 10.5 )));
-    CPPUNIT_ASSERT_EQUAL(( typeid( OUStringConcat< OUString, StringNumber< 
sal_Unicode, RTL_USTR_MAX_VALUEOFDOUBLE > > )), typeid( OUString( "num" ) + 
OUString::number( 10.5 )));
+    CPPUNIT_ASSERT_EQUAL(( typeid( OUStringConcat< OUString, OUString > )), 
typeid( OUString( "num" ) + OUString::number( 10.5 )));
 }
 
 void test::oustring::StringConcat::checkConcatAsciiL()

Reply via email to