summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2022-05-20 12:54:07 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2022-05-20 19:54:57 +0200
commit6510cbc486867db25d1d772f4a3b0b7b9bb2fc08 (patch)
tree629597e0e801659b06edb181bda017cdd823e04b /tools
parent443799ad8c0f5a2ae78ca03fb38618a2273682aa (diff)
elide temporary OUStringBuffer in INetURLObject
which requires a version of replaceAt for OUStringBuffer, which I'll put in comphelper::string:: for now Change-Id: I70b319b018e29a7dac26965dd92f6c4f9ea470ec Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134679 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'tools')
-rw-r--r--tools/source/fsys/urlobj.cxx107
1 files changed, 54 insertions, 53 deletions
diff --git a/tools/source/fsys/urlobj.cxx b/tools/source/fsys/urlobj.cxx
index a6f2329e281d..78c6d22af504 100644
--- a/tools/source/fsys/urlobj.cxx
+++ b/tools/source/fsys/urlobj.cxx
@@ -45,6 +45,7 @@
#include <com/sun/star/uno/Sequence.hxx>
#include <comphelper/base64.hxx>
+#include <comphelper/string.hxx>
using namespace css;
@@ -2085,8 +2086,9 @@ bool INetURLObject::convertIntToExt(std::u16string_view rTheIntURIRef,
DecodeMechanism eDecodeMechanism,
rtl_TextEncoding eCharset)
{
- OUString aSynExtURIRef(encodeText(rTheIntURIRef, PART_VISIBLE,
- EncodeMechanism::NotCanonical, eCharset, true));
+ OUStringBuffer aSynExtURIRef(256);
+ encodeText(aSynExtURIRef, rTheIntURIRef, PART_VISIBLE,
+ EncodeMechanism::NotCanonical, eCharset, true);
sal_Unicode const * pBegin = aSynExtURIRef.getStr();
sal_Unicode const * pEnd = pBegin + aSynExtURIRef.getLength();
sal_Unicode const * p = pBegin;
@@ -2094,8 +2096,7 @@ bool INetURLObject::convertIntToExt(std::u16string_view rTheIntURIRef,
bool bConvert = pPrefix && pPrefix->m_eKind == PrefixInfo::Kind::Internal;
if (bConvert)
{
- aSynExtURIRef =
- aSynExtURIRef.replaceAt(0, p - pBegin,
+ comphelper::string::replaceAt(aSynExtURIRef, 0, p - pBegin,
OUString::createFromAscii(pPrefix->m_pTranslatedPrefix));
}
rTheExtURIRef = decode(aSynExtURIRef, eDecodeMechanism, eCharset);
@@ -2108,8 +2109,9 @@ bool INetURLObject::convertExtToInt(std::u16string_view rTheExtURIRef,
DecodeMechanism eDecodeMechanism,
rtl_TextEncoding eCharset)
{
- OUString aSynIntURIRef(encodeText(rTheExtURIRef, PART_VISIBLE,
- EncodeMechanism::NotCanonical, eCharset, true));
+ OUStringBuffer aSynIntURIRef(256);
+ encodeText(aSynIntURIRef, rTheExtURIRef, PART_VISIBLE,
+ EncodeMechanism::NotCanonical, eCharset, true);
sal_Unicode const * pBegin = aSynIntURIRef.getStr();
sal_Unicode const * pEnd = pBegin + aSynIntURIRef.getLength();
sal_Unicode const * p = pBegin;
@@ -2117,9 +2119,8 @@ bool INetURLObject::convertExtToInt(std::u16string_view rTheExtURIRef,
bool bConvert = pPrefix && pPrefix->m_eKind == PrefixInfo::Kind::External;
if (bConvert)
{
- aSynIntURIRef =
- aSynIntURIRef.replaceAt(0, p - pBegin,
- OUString::createFromAscii(pPrefix->m_pTranslatedPrefix));
+ comphelper::string::replaceAt(aSynIntURIRef, 0, p - pBegin,
+ OUString::createFromAscii(pPrefix->m_pTranslatedPrefix));
}
rTheIntURIRef = decode(aSynIntURIRef, eDecodeMechanism, eCharset);
return bConvert;
@@ -2288,8 +2289,9 @@ bool INetURLObject::setUser(std::u16string_view rTheUser,
return false;
}
- OUString aNewUser(encodeText(rTheUser, PART_USER_PASSWORD,
- EncodeMechanism::WasEncoded, eCharset, false));
+ OUStringBuffer aNewUser;
+ encodeText(aNewUser, rTheUser, PART_USER_PASSWORD,
+ EncodeMechanism::WasEncoded, eCharset, false);
sal_Int32 nDelta;
if (m_aUser.isPresent())
nDelta = m_aUser.set(m_aAbsURIRef, aNewUser);
@@ -2343,8 +2345,9 @@ bool INetURLObject::setPassword(std::u16string_view rThePassword,
{
if (!getSchemeInfo().m_bPassword)
return false;
- OUString aNewAuth(encodeText(rThePassword, PART_USER_PASSWORD,
- EncodeMechanism::WasEncoded, eCharset, false));
+ OUStringBuffer aNewAuth;
+ encodeText(aNewAuth, rThePassword, PART_USER_PASSWORD,
+ EncodeMechanism::WasEncoded, eCharset, false);
sal_Int32 nDelta;
if (m_aAuth.isPresent())
nDelta = m_aAuth.set(m_aAbsURIRef, aNewAuth);
@@ -3355,8 +3358,8 @@ bool INetURLObject::insertName(std::u16string_view rTheName,
OUStringBuffer aNewPath(256);
aNewPath.append(pPathBegin, pPrefixEnd - pPathBegin);
aNewPath.append('/');
- aNewPath.append(encodeText(rTheName, PART_PCHAR,
- eMechanism, eCharset, true));
+ encodeText(aNewPath, rTheName, PART_PCHAR,
+ eMechanism, eCharset, true);
if (bInsertSlash) {
aNewPath.append('/');
}
@@ -3384,8 +3387,9 @@ bool INetURLObject::setQuery(std::u16string_view rTheQuery,
{
if (!getSchemeInfo().m_bQuery)
return false;
- OUString aNewQuery(encodeText(rTheQuery, PART_URIC,
- eMechanism, eCharset, true));
+ OUStringBuffer aNewQuery;
+ encodeText(aNewQuery, rTheQuery, PART_URIC,
+ eMechanism, eCharset, true);
sal_Int32 nDelta;
if (m_aQuery.isPresent())
nDelta = m_aQuery.set(m_aAbsURIRef, aNewQuery);
@@ -3417,8 +3421,9 @@ bool INetURLObject::setFragment(std::u16string_view rTheFragment,
{
if (HasError())
return false;
- OUString aNewFragment(encodeText(rTheFragment, PART_URIC,
- eMechanism, eCharset, true));
+ OUStringBuffer aNewFragment;
+ encodeText(aNewFragment, rTheFragment, PART_URIC,
+ eMechanism, eCharset, true);
if (m_aFragment.isPresent())
m_aFragment.set(m_aAbsURIRef, aNewFragment);
else
@@ -3441,22 +3446,21 @@ bool INetURLObject::hasDosVolume(FSysStyle eStyle) const
}
// static
-OUString INetURLObject::encodeText(sal_Unicode const * pBegin,
- sal_Unicode const * pEnd,
- Part ePart, EncodeMechanism eMechanism,
- rtl_TextEncoding eCharset,
- bool bKeepVisibleEscapes)
+void INetURLObject::encodeText( OUStringBuffer& rOutputBuffer,
+ sal_Unicode const * pBegin,
+ sal_Unicode const * pEnd,
+ Part ePart, EncodeMechanism eMechanism,
+ rtl_TextEncoding eCharset,
+ bool bKeepVisibleEscapes)
{
- OUStringBuffer aResult(256);
while (pBegin < pEnd)
{
EscapeType eEscapeType;
sal_uInt32 nUTF32 = getUTF32(pBegin, pEnd,
eMechanism, eCharset, eEscapeType);
- appendUCS4(aResult, nUTF32, eEscapeType, ePart,
+ appendUCS4(rOutputBuffer, nUTF32, eEscapeType, ePart,
eCharset, bKeepVisibleEscapes);
}
- return aResult.makeStringAndClear();
}
// static
@@ -3790,10 +3794,10 @@ bool INetURLObject::ConcatData(INetProtocol eTheScheme,
{
if (!rTheUser.empty())
{
- m_aUser.set(m_aAbsURIRef,
- encodeText(rTheUser, PART_USER_PASSWORD,
- EncodeMechanism::WasEncoded, RTL_TEXTENCODING_UTF8, false),
- m_aAbsURIRef.getLength());
+ OUStringBuffer aNewUser;
+ encodeText(aNewUser, rTheUser, PART_USER_PASSWORD,
+ EncodeMechanism::WasEncoded, RTL_TEXTENCODING_UTF8, false);
+ m_aUser.set(m_aAbsURIRef, aNewUser, m_aAbsURIRef.getLength());
bUserInfo = true;
}
}
@@ -3807,10 +3811,10 @@ bool INetURLObject::ConcatData(INetProtocol eTheScheme,
if (getSchemeInfo().m_bPassword)
{
m_aAbsURIRef.append(':');
- m_aAuth.set(m_aAbsURIRef,
- encodeText(rThePassword, PART_USER_PASSWORD,
- EncodeMechanism::WasEncoded, RTL_TEXTENCODING_UTF8, false),
- m_aAbsURIRef.getLength());
+ OUStringBuffer aNewAuth;
+ encodeText(aNewAuth, rThePassword, PART_USER_PASSWORD,
+ EncodeMechanism::WasEncoded, RTL_TEXTENCODING_UTF8, false);
+ m_aAuth.set(m_aAbsURIRef, aNewAuth, m_aAbsURIRef.getLength());
bUserInfo = true;
}
else
@@ -4101,12 +4105,11 @@ bool INetURLObject::setName(std::u16string_view rTheName, EncodeMechanism eMecha
while (p != pSegEnd && *p != ';')
++p;
- return setPath(
- rtl::OUStringConcatenation(std::u16string_view(pPathBegin, pSegBegin - pPathBegin)
- + encodeText(rTheName, PART_PCHAR, eMechanism, eCharset, true)
- + std::u16string_view(p, pPathEnd - p)),
- EncodeMechanism::NotCanonical,
- RTL_TEXTENCODING_UTF8);
+ OUStringBuffer aNewPath(256);
+ aNewPath.append(std::u16string_view(pPathBegin, pSegBegin - pPathBegin));
+ encodeText(aNewPath, rTheName, PART_PCHAR, eMechanism, eCharset, true);
+ aNewPath.append(std::u16string_view(p, pPathEnd - p));
+ return setPath(aNewPath, EncodeMechanism::NotCanonical, RTL_TEXTENCODING_UTF8);
}
bool INetURLObject::hasExtension()
@@ -4178,12 +4181,11 @@ bool INetURLObject::setBase(std::u16string_view rTheBase, sal_Int32 nIndex,
if (!pExtension)
pExtension = p;
- return setPath(
- rtl::OUStringConcatenation(std::u16string_view(pPathBegin, pSegBegin - pPathBegin)
- + encodeText(rTheBase, PART_PCHAR, eMechanism, eCharset, true)
- + std::u16string_view(pExtension, pPathEnd - pExtension)),
- EncodeMechanism::NotCanonical,
- RTL_TEXTENCODING_UTF8);
+ OUStringBuffer aNewPath(256);
+ aNewPath.append(std::u16string_view(pPathBegin, pSegBegin - pPathBegin));
+ encodeText(aNewPath, rTheBase, PART_PCHAR, eMechanism, eCharset, true);
+ aNewPath.append(std::u16string_view(pExtension, pPathEnd - pExtension));
+ return setPath(aNewPath, EncodeMechanism::NotCanonical, RTL_TEXTENCODING_UTF8);
}
OUString INetURLObject::getExtension(sal_Int32 nIndex,
@@ -4238,12 +4240,11 @@ bool INetURLObject::setExtension(std::u16string_view rTheExtension,
if (!pExtension)
pExtension = p;
- return setPath(
- rtl::OUStringConcatenation(OUString::Concat(std::u16string_view(pPathBegin, pExtension - pPathBegin)) + "."
- + encodeText(rTheExtension, PART_PCHAR, EncodeMechanism::WasEncoded, eCharset, true)
- + std::u16string_view(p, pPathEnd - p)),
- EncodeMechanism::NotCanonical,
- RTL_TEXTENCODING_UTF8);
+ OUStringBuffer aNewPath(256);
+ aNewPath.append(OUString::Concat(std::u16string_view(pPathBegin, pExtension - pPathBegin)) + ".");
+ encodeText(aNewPath, rTheExtension, PART_PCHAR, EncodeMechanism::WasEncoded, eCharset, true);
+ aNewPath.append(std::u16string_view(p, pPathEnd - p));
+ return setPath(aNewPath, EncodeMechanism::NotCanonical, RTL_TEXTENCODING_UTF8);
}
bool INetURLObject::removeExtension(sal_Int32 nIndex, bool bIgnoreFinalSlash)