summaryrefslogtreecommitdiff
path: root/sal
AgeCommit message (Collapse)Author
2022-10-11Deduplicate O(U)StringConcatenationMike Kaganski
And use an overloaded helper function with a better (?) unified name to show that the result is not an O(U)String. Change-Id: I8956338b05d02bf46a6185828130ea8ef145d46b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141203 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-09-27rtl uuid : remove useless endian conversionArnaud VERSINI
Change-Id: I65a4dad0aceb83f2449c86c438cb478937c8b90a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138229 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2022-09-23tdf#151117: Process non-existent long paths correctlyMike Kaganski
Regression after commit 92e835dbf00590c9c29509d2995cc7918a9bbb90 Author Kunal Pawar <hellokunalpawar@gmail.com> Date Fri Feb 18 19:15:04 2022 +0530 tdf#98705 Replace GetCaseCorrectPathName with GetLongPathNameW The fix tries to keep the performance improvement, and when the path exists, it will only call GetLongPathNameW once. Anyway, for unclear reason, this normalization only happens on long paths. Change-Id: I1cf9a47dfc35046ec1b5eebbbcaca09edb1c471a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140516 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-09-16OUString::matchIgnoreAsciiCase returns boolStephan Bergmann
Regression introduced with d2272426cc79d9aacf4a34c5fd7744b59c29e95b "Use some more C++ in sal/osl/w32", found with loplugin:implicitboolconversion. Change-Id: I5d929dd64bc02559318b8c89cb66bb0f5bba33f7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140072 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-09-15tdf#150877: Add support for Kamenický and Mazovia encodingsJulien Nabet
...as referenced e.g. at <https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/aa975345(v=vs.71)> "Code Pages Supported by Visual FoxPro". That source lists those two encodings with "code page" values 895 and 620, resp. (which might be what we call "Windows code pages" in include/rtl/tencinfo.h) and "code page identifier" values 0x68 and 0x69, reps. (which might be what we call "Windows charsets" in include/rtl/tencinfo.h. But I deliberately left these two new RTL_TEXTENCODING_* values without any mappings to such Windows codepages etc., as I didn't find any authoritative sources. What I used is the information available at <https://en.wikipedia.org/wiki/Kamenick%C3%BD_encoding> and <https://en.wikipedia.org/wiki/Mazovia_encoding>. (And while at it, I also updated the instructions what to do "Whenever some encoding is added here" in include/rtl/textenc.h.) This commit is building on some prior, abandoned work by Julien Nabet at <https://gerrit.libreoffice.org/c/core/+/139819> "tdf#150877: DBF Mazovia encoding (0x69)". Change-Id: Iae8af4ebab8915411499ae7ef951339b335aa857 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140014 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-09-13cid#1509290, cid#1509240: Silence "Use of 32-bit time_t (Y2K38_SAFETY)" for nowStephan Bergmann
We'll eventually need to do something about the 32 bit TimeValue::Seconds, but as it is unsigned we should be fine for another 80 years (until "06:28:15 UTC on Sunday, 7 February 2106", according to <https://en.wikipedia.org/wiki/Year_2038_problem#Solutions>). Change-Id: I74e680be0b2f0ef8cd84d6bc0faef436efc8d3cd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139859 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-09-13cid#1509232 silence Out-of-bounds accessCaolán McNamara
Change-Id: I53f0e0ead728c718d1241d1791135c3c60311303 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139608 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Jenkins
2022-09-07Be careful with failed reallocStephan Bergmann
Change-Id: I809e70487b9174ae902d3a11cc2845ec310d009f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139610 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-08-30Use some more C++ in sal/osl/w32Mike Kaganski
Change-Id: I407bd4b044143a42d5652dc4164421b602cfe486 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138958 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-08-23cid#1509185 Logically dead codeCaolán McNamara
do oslDoCopyFile only for S_ISREG. openFilePath (called from oslDoCopyFile) returns osl_File_E_INVAL for !S_ISREG so use EINVAL as the error code here to produce osl_File_E_INVAL too. Change-Id: I25a6c091799e051fe58c7dbfc2e7e062f16fe517 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138342 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-08-23tdf#148430 Use std math functions instead of rtl::mathLiu Hao
Revert the changes in rtl unit tests. Add some new unit tests to demonstrate the behavior of std functions is same as rtl functions. Change-Id: I12603e2502b8d0951ff5e1650dc8fa193d67c856 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138696 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-08-19tdf#148430 Use std math functions instead of rtl::mathLiu Hao
Change-Id: I6bcb33d51c3974d0e8905e1ffeac556a99870aab Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138294 Tested-by: Jenkins Reviewed-by: Eike Rathke <erack@redhat.com>
2022-08-16rtl : use a local std::mutex instead of the global mutexArnaud VERSINI
Change-Id: I95a35fe451e459276dcb8c9b90d515d0a34fe36c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138318 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-08-09crashreporting: frequent crash seen in PackedFile::flushCaolán McNamara
at: if (osl::File::E_None == osl::FileBase::createTempFile(nullptr, &aHandle, &aTempURL)) { .... if (osl_File_E_None == osl_writeFile(aHandle, ... createTempFile is returning osl::File::E_None but presumably we are missing setting a possible error state here https: //crashreport.libreoffice.org/stats/crash_details/ea4b4050-dd0f-42b1-b30f-b67612806371 Change-Id: Ib2d0c3c91e40fe985571e79822b91f2faf401471 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138013 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Jenkins
2022-08-05Fix typoStephan Bergmann
...introduced in f59136a2ed1e3eb01cc5b62c5a7da07c34cbdfae "tdf#91794 remove OSL_DEBUG_LEVEL > 1 conditionals" Change-Id: I4ead69b3fac4ab51602c3cbd25c8481e749a3e75 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137835 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-07-20tdf#141421 xml export: default stacksize for threads on macOS is too smallChristian Lohmaier
libxslt usage means lots of recursion for the sample document and the default for non-main threads is 512kB, see https://developer.apple.com/library/archive/qa/qa1419/_index.html and contrary to linux it doesn't default to the value set via ulimit. https://docs.microsoft.com/en-us/windows/win32/procthread/thread-stack-size says default for Windows is 1MB, so use that as a new default. (on linux it effectively is 8MB via ulimit, if not specified it would default to 2MB for most architectures) Change-Id: I10bd25301b0aea83e5bbb0c2103a0dd47a7e0736 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137269 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-07-02fix --enable-macosx-sandbox buildNoel Grandin
after commit eecc113e6f6e51e5e37059235c1069dc9c4c1cc8 Date: Sat May 21 08:30:29 2022 +0200 rtl_String->OString in sal Change-Id: I1b71858ae39ae3551a281b0fa5c47652f5bc1b3e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136723 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-06-24Let rtl_[u]stringbuffer_insert throw std::bad_alloc on overflowStephan Bergmann
Prior to a95c585433246813096e8890b7ed6ef4fe30c621 "Pump XInputStream into an SvMemoryStream rather than an OStringBuffer", this change would have caused > $ truncate -s 3G test.xml > $ instdir/program/soffice test.xml to open an effectively empty draw document (after apparently catching the std::bad_alloc now thrown from within OrcusFormatDetect::detect; see that commit's commit message for details) rather than crashing. This works because rtl_[u]stringbuffer_insert happen not to be decorated with SAL_THROW_EXTERN_C(). But even if they were (or when they are called from an external C program), it wouldn't be worse to let the process terminate due to the unexpected C++ std::bad_alloc exception than to let it crash due to an overflown signed integer computation and out-of-bounds memory write. Change-Id: I21e353367e2b978e8893a2886ac875367a75abd9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136352 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-05-30Avoid uninitialized temp_file_handleStephan Bergmann
...in case osl_create_temp_file_impl_ doesn't assign to it, for whatever osl_error reason, which then apparently leads to <https://crashreport.libreoffice.org/stats/crash_details/e47a9fbb-a6f1-4020-ade8-ab51549b727a> SIGSEGV at (relative to libreoffice-7-1) > 0 libuno_sal.so.3 osl_closeFile sal/osl/unx/file.cxx:1154 > 1 libuno_sal.so.3 osl_createTempFile sal/osl/unx/tempfile.cxx:330 > 2 libmergedlo.so PackedFile::flush include/osl/file.hxx:310 > 3 libmergedlo.so comphelper::BackupFileHelper::tryPush_file comphelper/source/misc/backupfilehelper.cxx:2090 [...] Change-Id: I2e81bbeab7daaaa3c19de4accce8a76ad24faa47 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135111 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-05-23Revert "[API CHANGE] call ftruncate instead of ftruncate_by_name"Noel Grandin
This reverts commit 1d58828f2285064635ed776e0641e83ee26d34da. because we need the filename for "sandboxed LibreOffice on OS X" functionality Change-Id: I598759de0f4bd9e6387df66038fc060e8a08027e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134783 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-05-23rename osl_getSystemPathFromFileURL_Ex->getSystemPathFromFileURL_ExNoel Grandin
so I can more readily distinguish between functions that are actually in the OSL API and functions that are not Change-Id: Ie113c30ea15d05457633396d56bca08057e38b60 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134800 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-05-23no need to override 'operator new' in FileHandle_ImplNoel Grandin
it's been a while since we had our own allocator Change-Id: I091c69c94a9592657dd845387530a3fa587a8c01 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134753 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-05-23rtl_String->OString in DirectoryItem_ImplNoel Grandin
Change-Id: Id7b97cbc4160b0d5953c5e378b11a2006292a9ce Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134799 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-05-22[API CHANGE] call ftruncate instead of ftruncate_by_nameNoel Grandin
The actual point of this change is making osl_fileOpen faster by avoiding constructing and storing an OString. But that requires changing to using ftruncate on the filehandle, which is arguably more correct anyway, using the filename to truncate in the presence of unlink() is dubious Change-Id: I8bc5022e1d1afb53fb4e2fd920e43e5daaf74ec4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134704 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-05-21rtl_String->OString in salNoel Grandin
Change-Id: I259c0dbe56fad2292f5ac0dc8e8f1047ead343c3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134699 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-05-18Extend loplugin:redundantcast to trivial reinterpret_cast from T to itselfStephan Bergmann
Change-Id: I7c0be7b435d6b5f97bdd40484023584146638d70 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134506 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-05-17clang-tidy modernize-pass-by-value in salNoel Grandin
Change-Id: If05c5cf0e333d0dbba31475af69c517486bf8923 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134472 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-05-14pthread_mutex_t->std::mutex in lookupThreadIdNoel Grandin
Change-Id: Ic9dfcfef5c604e778dfe527d627137042c8deb49 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134303 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-05-13Use calloc instead of malloc and memsetdante
Change-Id: I591ee7f5360a30779f831f6492cdbe71ab94099e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134165 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-05-12-Werror,-WformatStephan Bergmann
> sal/cppunittester/cppunittester.cxx(553,65): error: format specifies type 'unsigned int' but the argument has type 'DWORD' (aka 'unsigned long') [-Werror,-Wformat] > printf("\tat unknown (Error in SymFromAddr=%#08x)", GetLastError()); > ~~~~~ ^~~~~~~~~~~~~~ > %#08lx and DWORD should presumably always be a typedef for unsigned long according to <https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/262627d8-3418-4627-9218-4ffe110850b2> "2.2.9 DWORD" Change-Id: Ib1394c54fd649108bb6f6c748a5b7eae798884ad Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134214 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-05-12-Werror,-Wunused-variableStephan Bergmann
...since 92f93f300371d2011b53d48d3491870b24cff0b4 "output error code when SymFromAddr fails" Change-Id: I9d831e363fe98068cb55102628c98aa9d4ad5d3f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134213 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-05-11Revert "Disable -fsanitize=float-divide-by-zero in rtl_math_atanh"Stephan Bergmann
This reverts commit 6a4504bba84dcbaeb71869ec5c9ed6dfdc090619, which is no longer necessary after 6f75ec6115f0152517be634070607bc61bf96dd0 "tdf#148430 Use atanh from <cmath> instead of our own" changed the implementation of rtl_math_atanh. Change-Id: I11094f8c9fb0bb7b635541e7360e460816d3c171 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134161 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-05-11tdf#148430 Use atanh from <cmath> instead of our ownofftkp
Change wrapper in rtl::math::atanh to use atanh from <cmath>. Also changed all occurrences of rtl::math::atanh on files that use this function to directly use the standard atanh instead. Change-Id: Idc5c456f67291f5816756f023b61afde844b5ceb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133965 Tested-by: Jenkins Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
2022-05-06output error code when SymFromAddr failsNoel Grandin
instead of random data Change-Id: Iba020ea3a2386e3ad940cc85aac18047c3773967 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132066 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-05-03add o3tl::matchIgnoreAsciiCaseNoel Grandin
Change-Id: Iad8e1ed256d84808404bf20ed7a16b05b3db5818 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133753 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-04-29sal: tweak CppunitTest_sal_osl to run as uid 0Michael Stahl
Change-Id: I280bcc522f3cd375b5f94e644b76bc5f95899324 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133574 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2022-04-27add string_view wrappers for rtl::math::stringToDoubleNoel Grandin
Change-Id: I114bec72cb933238675e539a8388a607226827cd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133455 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-04-17loplugin:stringviewparam convert methods using copy()Noel Grandin
which converts to std::string_view::substr() Change-Id: I3f42213b41a97e77ddcc79d84d512f49d68ca559 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132729 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-04-15Introduce rtl::createUriCharClassStephan Bergmann
...to make those char class array initializations more readable. (Making the corresponding variables constexpr is mostly done so that failures in the provided `unencoded` arguments, like non-ASCII characters or duplicate character typos, would lead to compile-time errors also for !HAVE_CPP_CONSTEVAL. And assigning to a sal_Bool std::array needs another hack to avoid false loplugin:implicitboolconversion warnings.) Change-Id: Ieb8827f69f55f1212a9428817d5331fcb18ef1d8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133058 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-04-12loplugin:stringview more o3tl conversionNoel Grandin
look for call sequences that can use string_view and the new o3tl functions in o3tl/string_view.hxx Also add a few more wrappers to said #include file Change-Id: I05d8752cc67a7b55b0b57e8eed803bd06bfcd9ea Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132840 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-04-12tdf#143148 Use pragma once instead of include guardsShady Mohamed
Change-Id: I6262d64edcff4e73f2b148e98a62ee8d4b0d3294 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132839 Tested-by: Jenkins Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2022-04-10Move impl functions to the only place they are usedMike Kaganski
Change-Id: I6871bfc0ae3d2427a4cd135cb37aad76dac0d7a4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132706 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-04-10loplugin:stringview check for getToken and trimNoel Grandin
since we now have o3tl versions of those that work on string_view. Also improve those o3tl functions to support both string_view and u16string_view Change-Id: Iacab2996becec62aa78a5597c52d983bb784749a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132755 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-04-10osl signalshared : use std::mutex instead of oslMutex.Arnaud Versini
It also avoids possible double signal init and deinit. Change-Id: I4a24a011ee82d885e7a42abedea6a9fd96d3cab3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132434 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-04-09add a more complete o3tl::getTokenNoel Grandin
so we avoid OUString copying (mostly when doing stuff like parsing numbers of out of strings) Change-Id: I4ef6ac23671c0b40807a22158e655e92dfad4af6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132730 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-04-01Use some more string_viewStephan Bergmann
Change-Id: I630c573eedfcc9d8678fda0466ddcc1902fac0f0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132417 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-03-31A string_view is not necessarily NUL-terminatedStephan Bergmann
Regression introduced into LIBO_INTERNAL_ONLY code with 1da69081732c8a429840edaaf10cfb789ea68df8 "add string_view variants of methods to O[U]StringBuffer". And add some tests. Assigning an OStringChar to an OStringBuffer also uses the std::string_view assignment operator, so also test that with testOStringChar, even though there it is relatively likely that the OStringChar temporary is followed by null bytes, which could make the test happen to erroneously succeed. But at least tools like ASan or Valgrind could catch that. On the other hand, assigning an OUStringChar to an OUStringBuffer does not use the std::u16string_view assignment operator (and rather uses a ConstCharArrayDetector-based one, which was similarly broken and has been fixed in b66387574ef9c83cbfff622468496b6f0ac4d571 "Fix -Werror=array-bounds"), so there's no test for that here. Change-Id: I7cf10ee5ce0e4280a91d116cd82d4871a0f44af6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132363 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-03-31Fix -Werror=array-boundsStephan Bergmann
> In file included from svtools/source/svrtf/parrtf.cxx:28: > In member function ‘typename rtl::libreoffice_internal::ConstCharArrayDetector<T, rtl::OUStringBuffer&>::TypeUtf16 rtl::OUStringBuffer::operator=(T&) [with T = const rtl::OUStringChar_]’, > inlined from ‘virtual int SvRTFParser::GetNextToken_()’ at svtools/source/svrtf/parrtf.cxx:183:94: > include/rtl/ustrbuf.hxx:352:20: error: array subscript ‘unsigned int[0]’ is partly outside array bounds of ‘rtl::OUStringChar [1]’ {aka ‘const rtl::OUStringChar_ [1]’} [-Werror=array-bounds] > 352 | std::memcpy( > | ~~~~~~~~~~~^ > 353 | pData->buffer, > | ~~~~~~~~~~~~~~ > 354 | libreoffice_internal::ConstCharArrayDetector<T>::toPointer(literal), > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 355 | (n + 1) * sizeof (sal_Unicode)); //TODO: check for overflow > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > svtools/source/svrtf/parrtf.cxx: In member function ‘virtual int SvRTFParser::GetNextToken_()’: > svtools/source/svrtf/parrtf.cxx:183:94: note: object ‘<anonymous>’ of size 2 > 183 | aToken = OUStringChar( static_cast<sal_Unicode>(nTokenValue) ); > | ^ as seen with recent GCC 12 trunk in an --enable-optimized build. And add a test, even though it is relatively likely that the OUStringChar temporary is followed by null bytes, which would make the test happen to erroneously succeed. But at least tools like ASan or Valgrind could catch that. (For the corresponding OStringChar and OStringBuffer scenario, this issue does not arise, as OStringChar is not covered by ConstCharArrayDetector, so the correpsonding OStringBuffer assignment operator is OK memcpy'ing n+1 elements. There /are/ similar issues with string_view assignment operators for both O[U]StringBuffer, which will be addressed in a later commit.) Change-Id: Ia131d763aa5f8df45b9625f296408cc935df96ac Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132354 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-03-31-Werror,-Wunused-but-set-variableStephan Bergmann
...ever since 24b06b9c6bdb777dff385b0fbfc81d55d3d013a1 "log access violation on windows tinderboxen" Change-Id: I8a26135131774d0c9fd160b805a3ab798a216cf9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132349 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Jenkins
2022-03-29Add back the opportunity to leave O[U]StringLiteral's buffer uninitializedStephan Bergmann
...once we have a C++20 baseline, which would render uses of the consteval O[U]StringLiteral ctors ill-formed if we accidentally failed to write to all of buffer's elements. This had been broken (and the TODO comments had become misleading) with 21584b304b21bfe6b99b6f29018c6b754ea28fc0 "make OUString(OUStringLiteral) constructor constexpr" and bca539e889d40e06cb3275442622cb075b2484a2 "make OString(OStringLiteral) constructor constexpr". Also add corresponding test code. Change-Id: I2bc680282c717d403a681ff4b9396580c8382de1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132275 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>