(related: tdf#121842) sw: encode URLs generated in ToX
The "|" is used as a separator there and it looks like it has never been allowed in a URI, even in a fragment. Change-Id: I1e4b9e12f5409f93c2291494fd4350431f68fe2b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110388 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
This commit is contained in:
@@ -44,8 +44,8 @@ public:
|
||||
static constexpr OUStringLiteral STYLE_NAME_2 = u"anyStyle2";
|
||||
static const sal_uInt16 POOL_ID_1;
|
||||
static const sal_uInt16 POOL_ID_2;
|
||||
static constexpr OUStringLiteral URL_1 = u"anyUrl1";
|
||||
static constexpr OUStringLiteral URL_2 = u"anyUrl2";
|
||||
static constexpr OUStringLiteral URL_1 = u"#anyUrl1";
|
||||
static constexpr OUStringLiteral URL_2 = u"#anyUrl2";
|
||||
};
|
||||
|
||||
const sal_uInt16 ToxLinkProcessorTest::POOL_ID_1 = 42;
|
||||
|
@@ -13,6 +13,7 @@
|
||||
#include <SwStyleNameMapper.hxx>
|
||||
#include <ndtxt.hxx>
|
||||
#include <sal/log.hxx>
|
||||
#include <rtl/uri.hxx>
|
||||
|
||||
namespace sw {
|
||||
|
||||
@@ -37,8 +38,15 @@ ToxLinkProcessor::CloseLink(sal_Int32 endPosition, const OUString& url)
|
||||
return;
|
||||
}
|
||||
|
||||
// url contains '|' which must be encoded; also in some cases contains
|
||||
// arbitrary strings that need to be encoded
|
||||
assert(url[0] == '#'); // all links are internal
|
||||
OUString const uri("#" + rtl::Uri::encode(url.copy(1),
|
||||
rtl_UriCharClassUricNoSlash,
|
||||
rtl_UriEncodeIgnoreEscapes, RTL_TEXTENCODING_UTF8));
|
||||
|
||||
std::unique_ptr<ClosedLink> pClosedLink(
|
||||
new ClosedLink(url, m_pStartedLink->mStartPosition, endPosition));
|
||||
new ClosedLink(uri, m_pStartedLink->mStartPosition, endPosition));
|
||||
|
||||
const OUString& characterStyle = m_pStartedLink->mCharacterStyle;
|
||||
sal_uInt16 poolId = ObtainPoolId(characterStyle);
|
||||
|
@@ -19,7 +19,6 @@
|
||||
|
||||
#include <unotools/charclass.hxx>
|
||||
#include <osl/diagnose.h>
|
||||
#include <rtl/uri.hxx>
|
||||
#include <txtfld.hxx>
|
||||
#include <doc.hxx>
|
||||
#include <IDocumentLayoutAccess.hxx>
|
||||
@@ -204,10 +203,7 @@ std::pair<OUString, bool> SwTOXSortTabBase::GetURL(SwRootFrame const*const pLayo
|
||||
+ OUStringChar(toxMarkSeparator) + typeName
|
||||
+ OUStringChar(cMarkSeparator) + "toxmark" );
|
||||
|
||||
OUString const uri(rtl::Uri::encode(decodedUrl, rtl_UriCharClassUricNoSlash,
|
||||
rtl_UriEncodeIgnoreEscapes, RTL_TEXTENCODING_UTF8));
|
||||
|
||||
return std::make_pair(uri, true);
|
||||
return std::make_pair(decodedUrl, true);
|
||||
}
|
||||
|
||||
bool SwTOXSortTabBase::IsFullPara() const
|
||||
|
Reference in New Issue
Block a user