cef555e9a4
<https://lists.freedesktop.org/archives/libreoffice/2023-November/091151.html>
"CppunitTest_stoc_uriproc failed on Windows" reports that
translateToExternal("file:///abc/%feef") produces an empty string (indicating
failure) instead of "file:///abc/%FEef" (as expected in
stoc/test/uriproc/test_uriproc.cxx) when osl_getThreadTextEncoding() is Shift
JIS.
This was due to how the call to rtl::Uri::encode in
Translator::translateToExternal (in
stoc/source/uriproc/ExternalUriReferenceTranslator.cxx) behaved: It internally
interpreted its input "%FE" as the single-byte Shift JIS character 0xFE. Which
gets mapped to U+2122 as an extension (see "APPLE additions over SJIS, we
convert this like Apple, because I think, this gives better result, then [sic]
we take a replacement char" in sal/textenc/tcvtjp6.tab) in readUcs4, but which
in turn doesn't get mapped back to any Shift JIS character in writeEscapeChar.
Translator::translateToExternal is the only user of
rtl_UriEncodeStrictKeepEscapes, as introduced by
|
||
---|---|---|
.. | ||
android | ||
cppunittester | ||
emscripten | ||
inc | ||
osl | ||
qa | ||
rtl | ||
test | ||
textenc | ||
util | ||
CompilerTest_sal_rtl_oustring.mk | ||
CppunitTest_Module_DLL.mk | ||
CppunitTest_sal_comtools.mk | ||
CppunitTest_sal_osl.mk | ||
CppunitTest_sal_osl_security.mk | ||
CppunitTest_sal_retry_if_failed.mk | ||
CppunitTest_sal_rtl.mk | ||
CppunitTest_sal_types.mk | ||
Executable_cppunittester.mk | ||
Executable_osl_process_child.mk | ||
IwyuFilter_sal.yaml | ||
Library_lo-bootstrap.mk | ||
Library_sal.mk | ||
Library_sal_textenc.mk | ||
Makefile | ||
Module_sal.mk | ||
README.md |
System Abstraction Layer (SAL)
System abstraction layer; rtl, osl and sal
rtl
:
Platform independent strings
osl
:
platform specific stuff, threads, dynamic loading, process, ipc, etc
Exports only C API and some inline-methods (only C++ API).