summaryrefslogtreecommitdiff
path: root/sal/util
AgeCommit message (Collapse)Author
2017-12-15sal: add pre-initialization scheme for allocations.Michael Meeks
This saves several megabytes of dirtied pages for each LOK client of Online. Change-Id: I425a2e7896879f0a64d71fcc0655e9e1fa1256aa
2017-09-15sal: add missing 32-bit backtrace symbol to sal.mapMichael Stahl
Was missing in commit bc9a2ba677ce3fcd46c2bbef6e8faeacb14292c1. Change-Id: I9b270d2363aee847afccb1a5d8f4c3d0af16fc27
2017-09-06Clean up sal/backtrace.hxxStephan Bergmann
Change-Id: Id78e9c0ca29ff2e52591f3d446431ac23c20ab7a Reviewed-on: https://gerrit.libreoffice.org/41926 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-08-16assert on duplicate listener in SfxListenerNoel Grandin
To enable finding the source of the duplicate calls, I add new SAL API (only for internal use) to retrieve and symbolise stack backtraces. The theory is that it relatively cheap to just store a backtrace, but quite expense to symbolise it to strings. Note that the backtrace() library we use on Linux does not do a particularly good job, but it gives enough information that developers can use the addr2line tool to get more precise info. Explanation of fixes in the code that triggered the assert: In SwFrameHolder, we need to only call StartListening() if the pFrame member is actually changing. We also need to call EndListening() on the old values when pFrame changes. In SwNavigationPI, there is already a StartListening() call in the only place we assign to m_pCreateView. In ImpEditEngine, we need to ignore duplicates, because it is doing a ref-counting thing. By storing duplicates on the listener list, it doesn't need to keep track of which stylesheets its child nodes are using. Given that it therefore will see duplicate events, there is probably some performance optimisation opportunities here. In MasterPageObserver::Implementation::RegisterDocument, we seem to be getting called multiple times with the same SdDrawDocument, so just check if we've been registered already before calling StartListening() In SvxShape::impl_initFromSdrObject, do the same thing we do elsewhere in this class, i.e. only call StartListening() if the model has changed. Change-Id: I7eae5c774e1e8d56f0ad7bec80e4df0017b287ac Reviewed-on: https://gerrit.libreoffice.org/41045 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-02-09Fold sal_detail_log_backtrace into sal_detail_logStephan Bergmann
...the latter is LO-privately exported from sal, so it should be OK to add one more parameter to it. Change-Id: If6bf3458433aac2cc8b4e0cbd1602306051a777b Reviewed-on: https://gerrit.libreoffice.org/34080 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-02-03tdf#91872: Make SAL_INFO and friends more efficientArnold Dumas
Change-Id: I8a5b1665660b0679439f07d3924bb90cb4c4075c Reviewed-on: https://gerrit.libreoffice.org/33848 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-01-10rename SAL_DEBUG_TRACE to SAL_DEBUG_BACKTRACENoel Grandin
since "trace" is such a generic term, this makes it easier to actually find the feature when you need it. And add feature to limit stack depth of the reported backtrace. Change-Id: Iab3e4ceb2e8480e7b5e2b920eb6c5d7631e21c43 Reviewed-on: https://gerrit.libreoffice.org/31752 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-10-04@since tag; sortingStephan Bergmann
follow-up to 2135eae2a97c17d89cb47a2074830fd2d7b2226f "let approxEqual() not scale too early for large representable integer values" Change-Id: I628e01297fea08915d0ca1c95f3ba13f7ce15db8
2016-10-01let approxEqual() not scale too early for large representable integer valuesEike Rathke
And since this is now too much code for inline move implementation to math.cxx Which again made it necessary to give libreofficekit lokdocview.cxx its own implementation that doesn't even claim to build against sal ... Change-Id: I0f80be9d9172ee20693b9babde715206f2c3d8c1 Reviewed-on: https://gerrit.libreoffice.org/29428 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins <ci@libreoffice.org>
2016-08-29Support ConstCharArrayDetector also for UTF-16 arraysStephan Bergmann
The long-term benefit will be support of C++11 char16_t string literals (for cases of string literals with non-ASCII content) once we drop any compilers that don't support those yet. The short-term benefit is support for an improved OUStringLiteral1 that accepts any sal_Unicode value, not just ASCII ones (see next commit). Change-Id: I3f8f6697d7eb62b5176b7e812b5a5113c53b83a4 Reviewed-on: https://gerrit.libreoffice.org/28445 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2016-03-08tdf#98407 PathSubstitution: Add substitution for $(username)Samuel Mehrbrodt
This allows to use the username as a placeholder in the config paths (Autotext, Gallery, etc) Change-Id: I76434e980cd8ec8785a5587d0bc5fdd67dc42de2 Reviewed-on: https://gerrit.libreoffice.org/22901 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Stephan Bergmann <sbergman@redhat.com>
2015-06-26Add optimized OUString += literal overloadStephan Bergmann
Change-Id: Ib34196185f90204a71598f2c659c3fddce7a0e4d
2015-06-23Implement full set of OUString::replaceFirst/All literal overloadsStephan Bergmann
Change-Id: I5f525d91ce24d1d2653a6855f1c4fffc039ae398
2015-04-10Update @since tags LO 4.5 -> 5.0Stephan Bergmann
Change-Id: Idb2e46fcaa080d6763d2e3ed963f7673a2353eb2
2015-04-02Move osl::LibreOfficeKit stuff to comphelper for nowTor Lillqvist
Let's see where it actually will be needed. Sal is a "picky" place for new API, even inside LIBO_INTERNAL_ONLY. Change-Id: Ia0c5ee8cfc6ee526c5ad34d2f8aab0b14b5f805b
2015-04-01Add API to check whether being used through LibreOfficeKitTor Lillqvist
LibreOffice code, when used in a program through LibreOfficeKit, needs to be aware of that in certain crucial spots, to avoid behaviour and functionality that makes no sense in a LibreOfficeKit scenario. As LibreOfficeKit uses a normal LibreOffice installation to perform its job, this can't be a compile-time choice. Also, none of the existing run-time "headlessness" modes fully match what is needed. Change-Id: Iaccf7f958c549f019b508854800519f54dcadb11
2015-03-31V597: introduce a rtl_secureZeroMemoryCaolán McNamara
Change-Id: Id28046eb318cd3b2ed0b813fd266617547cf6ee2
2015-02-16Related: tdf#63690 - add stubs for removed rtl_logfile functions.Thorsten Behrens
This fixes up 3d403f2af2e5b7d26254d45590764f279450fab6, by not removing public API. Change-Id: I60a4b7284661238bdf32a1600f27a7e507c5374a
2015-02-14Related: tdf#63690 - remove rtl_logfileThorsten Behrens
This was unused since the earlier cleanup. Change-Id: Ia56641c4242037a0ce501e43939b8dc862499f0e
2014-07-11Introduce osl_areCommandArgsSet.Andrzej Hunt
We cannot call osl_setCommandArgs twice, however there is currently no way to determine whether or not this has already been done. This is necessary e.g. for LibreOfficeKit where we may also be using UNO separately (and also for unit tests where LO is already set-up prior to the unit test running, and therefore we can't set up osl again from within LOK). Change-Id: Id1f357ef604eb2b6b7814c9a04ac6933a39fd3eb
2014-05-20fdo#60338: Introduce osl_createDirectoryWithFlagsStephan Bergmann
...so that utl::TempFile can pass osl_File_OpenFlag_Private and doesn't have to resort to umask (the calls to umask around Directory::create had somewhat erroneously been removed recently with 1d72a0262c4570631d0aa8f98e34e21fb9d6ae42 "Related fdo#60338: Create missing temp file dir with user's original umask," mistaking this for creation of intermediate directories in the hierarchy). On Windows, the flags argument to osl_createDirectoryWithFlags is ignored completely for now. Change-Id: Iac56a5049d579be729a3f338aa62105123edb6cb
2014-05-13All three uses of osl_getFileOSHandle have been removed againStephan Bergmann
...introduced with a64db11b6ca1c0c99937cd99129758dbbe575ac2 "Add some non-public API to be used by SvFileStream" and e541105b45d5da8df296883111194e3a0297a2e7 "Use osl API to access files in the SvFileStream code" but subsequently identified as dead code with ab02fa6552fb098990e74f2787cf02b01c0e532b "callcatcher: update list," 05a8216d03b5db559e01dd1808f2805df31c970a "STAR_ENABLE_FILE_LOCKING was a secret," and 1d3483ed279982278b2f9fb1bab63485523e48c5 "Remove some unused code from unusedcode.easy." Change-Id: I9c8584890270a87e58b8d8021080ffe54bc97b93
2014-05-13osl_openMemoryAsFile is internal, Android-only functionalityStephan Bergmann
Change-Id: I36734b0e5e1c0b15ed4f0845450b444b23579ffe
2014-02-28Fix typo: s/Alined/AlignedTor Lillqvist
Change-Id: I248d002d2ed0e61f97a35ea0d329c64832252ad7
2014-02-27Ensure that numeric array storage is aligned to 256-byte boundary.Kohei Yoshida
OpenCL devices require this else we would get a performance hit. Change-Id: I6b1db6320fa84f933b6446022a0fd02ba267bf21
2014-02-18Stick to a single O[U]String hash functionStephan Bergmann
8f8bc0dcf3bc253ae49159d52db049767f476ced "Move string hash function into String class" had introduced a new getHash64 that, besides returning sal_uInt64 instead of just sal_Int32, didn't do sampling of only a handful of characters, but always computed the hash over all characters (as the usage in SfxItemSet and SdPage appears to require for either performance or approximated correctness). However, it would be advantageous to keep the stable URE interface as small as possible. Now, O(1) sampling was apparently considered state of the art when the rtl string classes were first created, closely copying java.lang.String, which at that time demanded sampling for hashCode(), too---but never sampling more than 15 characters, with the obvious (in hindsight, at least) performance catastrophes, so they changed it to O(n) somewhere along the way. Based on that, this commit changes the existing hash functions to not do sampling any more, and removes the newly introduced -64 variants again. (Where the extended value range of sal_uInt64 compared to sal_Int32 was hopefully not vital to the existing uses.) The old implementation used sampling only for strings of length >= 256, so I did a "make check" build with an instrumented hash function that flagged all uses with inputs of length >= 256, and grepped workdir/{Cppunit,Junit,Python}Test for hits. Of the 2849 hits encountered, 2845 where in the range from 256 to 295 characters, and only the remaining four where of 2472 characters. Those four were from CppunitTest_sc_subsequent_filters_test, importing long text into a cell, causing ScDocumentImport::setStringCell to call svl::SharedStringPool::intern, which internally uses an unordered_set. These results appear to justify the change. Change-Id: I78fcc3b0f07389bdf36a21701b95a1ff0a0d970f
2014-02-17String cleanups.Muthu Subramanian
Change-Id: Ibebf394d69ed4845d91176727f291187ba35ed34
2014-02-13Move string hash function into String class.Muthu Subramanian
hashCode() seems to do sampling while creating the hash. hashCode64() will not. Change-Id: Id30f5a2a774cf5244dbc00da9649e95a532484be
2013-06-13Introduce O[U]String::toUInt32Stephan Bergmann
...which has become necessary since bd60d41176da540b01d7583cfe00637431967f39 "Handle oveflow in O(U)String::toInt() functions" reduces values in the range (SAL_MAX_INT32 .. SAL_MAX_UINT32] to zero, but some calls of toInt32(16) relied on getting a correct (unsigned) value for the whole input range ["0" .. "FFFFFFFF"] (see libreoffice-4-1 commit 9bf6c83367cedb7be81bf67f30d2147d26c7a8c3 "Revert overflow checks in O[U]String::toInt{32,64} again"). Audited all uses of toInt32/64 with non-decimal radix. (There is still a TODO comment in oox/source/helper/attributelist.cxx, and stoc/source/typeconv/convert.cxx will still need some love and test code.) Change-Id: Iadaca1c0e41dab553687d0ce41c20c10cd657a95
2013-03-25Clean up new toUInt64Stephan Bergmann
Change-Id: Ic908cb5cc9169ab1baae2c1c52070adfb9afba39
2013-02-04add OUString::toUInt64()David Ostrovsky
Change-Id: I2051e161219d424d2c2b69faf6f939cfe21fa5f7 Reviewed-on: https://gerrit.libreoffice.org/1980 Reviewed-by: Luboš Luňák <l.lunak@suse.cz> Tested-by: Luboš Luňák <l.lunak@suse.cz>
2013-01-28cleanups for number() string functionLuboš Luňák
- add sal_uInt64 valueOf helper to handle its full value range - group deprecated valueOf() together - forward to the number() taking the largest type instead of repeating the same code every time - various doc improvements: - add missing @since - do not refer to non-existent number() overloads in docs - "use number" - "huh, of course I use a number?" - "code your own" - my own function? why? - + or += operators are not, strictly speaking, replacements for valueOf() Change-Id: Ib138a06c4ac4365cfffc534e6ab115d55180a70d
2012-12-06mvoe rtl_(u)string_alloc to salLuboš Luňák
No point in hidding something useful like this in some helper lib. Change-Id: I7332d7f6bd428378cd19e7e95ad130771a541140
2012-12-06rtl_(u)String_ensureCapacityLuboš Luňák
Ensure there will be enough extra space in a string, to be used for string appending. A bit like rtl_(u)String_newConcat(), but without the function actually appending anything. Unlike the stringbuffer variant this does not allocate any extra. Change-Id: Ic6f84bf014a713f9912c81d8f1405c593978822d
2012-12-04LIBO_UDK_3.7 -> LIBO_UDK_4.0Luboš Luňák
There will be no 3.7. Change-Id: Ib2808aa259baaa7eac42c7ec7a640105fc8c07a1
2012-12-04Fixup: putting back dummy methods for removed semaphoreThorsten Behrens
We don't want to change sal SONAME just yet. Change-Id: I3a9de9a53a4ba845c00a26450e281534ca5d97f6
2012-12-04API CHANGE: remove long-deprecated Semaphore & related stuff.Thorsten Behrens
osl::semaphore was not portable & thusly long-deprecated. Also killing further unused clients of that code in salhelper. Change-Id: Ie1c1924e06e8ce3be33fd1dc2c6933f2de8b5217
2012-11-21re-base on ALv2 code. Includes:Michael Meeks
Patch contributed by Herbert Duerr: #i118662# remove berkeleyDB from module xmlhelp (author=orwitt) http://svn.apache.org/viewvc?view=revision&revision=1213188 #i119141# remove ISCII converter for now http://svn.apache.org/viewvc?view=revision&revision=1306246 make exceptions for cppunittester verbose http://svn.apache.org/viewvc?view=revision&revision=1174831 Patches contributed by Pedro Giffuni: Avoid some uses of non portable #!/bin/bash in shell scripts. http://svn.apache.org/viewvc?view=revision&revision=1235297 Patch contributed by Oliver-Rainer Wittmann 88652: applied patch, remove unicows deps http://svn.apache.org/viewvc?view=revision&revision=1177585 drop OS/2 code, remove in-line assembler ARM atomics, and obsolete armarch header.
2012-10-09Add a 'fromIndex' parameter to OUString::replaceAllNoel Grandin
This method will be needed for forthcoming String->OUStringBuffer conversions. Change-Id: I001099baaca5cd402aebcd15c031d9060286a8f9
2012-10-04Version name/dependency cleanup towards 3.7Stephan Bergmann
Change-Id: Ib5da7703bf48713093bc6a3380facafd0013e039
2012-10-02update string copy semantics to be undefined in a non-crashing way.Michael Meeks
Change-Id: I03bb4db5931932280e368012cbaee6bef2854dd6
2012-07-20saltextenc.map is unncessaryStephan Bergmann
...as sal_textenc lib is not part of stable URE interface. Change-Id: I5aeacd7668cca36f900aede4012d508217f3ab46
2012-05-18fdo#42865: privatized unique empty string symbol:Michael Stahl
Unfortunately this --enable-dbg-util only problem (caused by _GLIBCXX_DEUBG) resurfaced, perhaps because of new std::string based logging in sal; adapt all map files to export the unique symbol.
2012-04-02sal: expose more stringbuffer related instrumentation pointsMichael Meeks
Avoid ref/unref pair in makeStringAndClear, hook into the stringbuffer-like 'String' class to expose it's conversion to immutable strings, and fixup misc. missing instrumentation.
2012-03-31sal: use CustomTarget makefileMatúš Kukan
2012-03-12OString ctor for string literals without RTL_CONSTASCII stuffLuboš Luňák
2012-03-12rtl_uString_newFromLiteral() for string literalsLuboš Luňák
Drop the recently introduced rtl_uString_newFromAscii_WithLength() and replace it with this one. The name fits better and it'll be also a distinct function that specifically includes embedded \0's (because that's what OUString supports and if a string literal explicitly includes it, it makes sense to copy it as such).
2012-03-12osl_loadModuleRelativeAscii was erroneously not exportedStephan Bergmann
2012-03-05rtl_uString_newFromAscii_WithLength() and use it in OUStringLuboš Luňák
2012-02-15Various string function clean upStephan Bergmann
Added: * rtl::OString::matchL * rtl::OString::endsWith * rtl::OString::endsWithL * rtl::OString::indexOfL * rtl::OString::replaceFirst * rtl::OString::replaceAll * rtl::OString::getToken * rtl::OUString::endsWith * rtl::OUString::replaceFirst * rtl::OUString::replaceFirstAsciiL * rtl::OUString::replaceFirstAsciiLAsciiL * rtl::OUString::replaceAll * rtl::OUString::replaceAllAsciiL * rtl::OUString::replaceAllAsciiLAsciiL * rtl::OUString::getToken plus underlying C functions where necessary Deprecated: * comphelper::string::remove * comphelper::string::getToken Removed: * comphelper::string::searchAndReplaceAsciiL * comphelper::string::searchAndReplaceAllAsciiWithAscii * comphelper::string::searchAndReplaceAsciiI * comphelper::string::replace * comphelper::string::matchL * comphelper::string::matchIgnoreAsciiCaseL * comphelper::string::indexOfL Also fixed some apparent misuses of RTL_CONSTASCII_USTRINGPARAM -> RTL_CONSTASCII_STRINGPARAM.