Commit Graph
472 Commits
Author SHA1 Message Date
Stephan Bergmann 83dd8deed7 loplugin:trivialdestructor (-stdlib=libc++)
That these are only flagged when building against libc++ and not against
libstdc++ is a consequence of the plugin's dependence on implementation details
of the relevant classes, but so be it.

Change-Id: I6b96f81939edab2b8e618aa53c9fe23492edfbbd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131562
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-03-14 22:30:44 +01:00
Noel Grandin 7002caa97e new loplugin:trivialdestructor
look for potentially trivial destructors that can then be elided

Change-Id: I435c251bd4291b5864c20d68f88676faac7c43fb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131318
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-03-11 09:06:06 +01:00
Gabor Kelemen 7b5193e2ae Recheck modules [o-r]* with IWYU
See tdf#42949 for motivation

Change-Id: I6b4b05a5e59b256653c4caf5297fffd601b45083
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128845
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2022-01-30 16:10:57 +01:00
Armin Le Grand (Allotropia) 4a0ccb5fec WASM make test file loading work
Change-Id: Ic34104534c3e0e73791cf867bfb2e1246dc79cf8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128653
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-20 14:27:16 +01:00
Noel Grandin 5c00fadcc9 optimise and simplify ZipOutputEntryInThread
by just using the tempfile service as intended, we can stay
on the "happy path" which means that, on Windows, if there is
sufficient system RAM, the temporary file never even hits
the disk.

Change-Id: I3b27cf09bd40a4cfee01c23273af05860708a16f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128258
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-01-11 07:19:25 +01:00
Noel Grandin a3fa2c3bad Simplify some TempFile service code
Change-Id: Id39be33dcc5aa9378e29c850cb71d3662093ab25
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128189
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-01-09 18:02:08 +01:00
Mike Kaganski d0a8d4a973 Prepare for removal of non-const operator[] from Sequence in package
Change-Id: Ib5d7fa143c4c5e3b4862ed4b91acf1e2dfc4d8bb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124378
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-10-30 20:17:13 +02:00
Mike Kaganski 2484de6728 Remove non-const Sequence::begin()/end() in internal code
... to avoid hidden cost of multiple COW checks, because they
call getArray() internally.
This obsoletes [loplugin:sequenceloop].

Also rename toNonConstRange to asNonConstRange, to reflect that
the result is a view of the sequence, not an independent object.

TODO: also drop non-const operator[], but introduce operator[]
in SequenceRange.

Change-Id: Idd5fd7a3400fe65274d2a6343025e2ef8911635d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123518
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-10-15 10:36:36 +02:00
Noel Grandin 05ab38359a Consolidate on C++17 std::scoped_lock instead of std::lock_guard
as in commit 9376f65a26

Change-Id: I3ad9afd4d113582a214a4a4bc7eea55e38cd6ff9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119927
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-08-03 12:20:53 +02:00
Mike Kaganski 93e90309b3 Use ZLIB_CONST to avoid const_cast
It is available since 2011 [1]. CentOS 7, which is the baseline,
included zlib 1.2.7, which was released in 2012, and included [1].

[1] https://github.com/madler/zlib/commit/5ab9f47745fe9353291b217f705086b6070575d5,

Change-Id: Ie6cf2e934579620787426d95380f8ff6d6423b7d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119627
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-07-31 23:27:25 +02:00
Noel Grandin 95f5c4fb55 getArray->getConstArray in package
so we can avoid the const of making the Sequence singular

Change-Id: I939d573c0f1e7a5d3b09a8589c0fda1e9ea38208
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119739
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-07-31 18:21:42 +02:00
Noel Grandin 4bf1fbc957 tsan:data race in XBufferedThreadedStream
cannot read from maInUseBuffer without holding the lock

Change-Id: I4244e1132595a18c1a7ab33803e10b6c29684bf9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119707
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-07-30 17:54:32 +02:00
Noel Grandin 0c3da17e41 pass ZipEnumeration around by value
Change-Id: I8418bd3eb6a8013f55f4283c7d96755d95a60c1a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119305
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-07-21 12:20:23 +02:00
Noel Grandin 0f580560e9 osl::Mutex->std::mutex in StarOfficeSHA1DigestContext
Change-Id: I924796823230151a3edde2ead875cfc5bc5072d1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119282
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-07-20 21:03:38 +02:00
Noel Grandin 0c14226903 osl::Mutex->std::mutex in CorrectSHA1DigestContext
Change-Id: Ia81e8edd84080a2cb750e2dce7b2e8879b66498e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119281
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-07-20 21:03:16 +02:00
Noel Grandin 9bae1f1ad6 no need to use a pImpl in CorrectSHA1DigestContext
Change-Id: If7404f63833373c5ac2954c4aac129c52582989c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119280
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-07-20 21:02:52 +02:00
Noel Grandin 966ae2345c osl::Mutex->std::mutex in BlowfishCFB8CipherContext
Change-Id: Id70ec156ab9e06a48a5a2571fc0186bd63b280a5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119279
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-07-20 19:36:59 +02:00
Noel Grandin a4a023f7f4 osl::Mutex->std::mutex in ByteGrabber
Change-Id: I96ea49da6708041ac19e147f192c7e996d44b8ec
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119276
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-07-20 19:23:49 +02:00
Noel Grandin 3ffb7efa95 remove some unnecessary OUString::intern
Change-Id: Ia0f41dfc8a00c115ad544b8236d751e6b2dae5ab
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117577
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-06-21 15:02:53 +02:00
David Blatter 24fad8bf16 fix detection of encrypted zip entries
if a zip entry is encrypted, bit 1 of the flags field is set. previously
bit 1 of the version field was checked. a valid zip with a required version
of e.g. 45 generated a 'file is corrupt' error

see: https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.3.3.TXT
(sections 4.4.3 and 4.4.4)

Change-Id: I8bba6ead582e6cab55c8449f202807b50befea07
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113420
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2021-04-02 12:51:29 +02:00
Noel 99bc040b13 loplugin:referencecasting in oox..package
Change-Id: I4276c6c45cb2478afbc0231a15c402ddcafd00a7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110950
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-02-16 07:52:03 +01:00
Philipp Hofer eb4c2e96f3 tdf#123936 Formatting files in module package with clang-format
Change-Id: I3ff80c6c636003d468f384e0d6fbfb5233e0b4da
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105696
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Tested-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
2020-11-19 19:23:33 +01:00
Noel 29fefd93b8 loplugin:reducevarscope in package
Change-Id: If35738232ceb0442d57b9e9b37a850e0920e61b2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105335
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-11-05 17:19:42 +01:00
Luboš Luňák b3c4ca3439 properly finish encrypting when parallel zip saving (tdf#134796)
More fixing of 353d4528b8, that I didn't get quite right
in 08161f8535. There must be one final processDeflated()
call that has isDeflaterFinished() return true, so that
encrypting is finalized properly.

Change-Id: Id15190cc467a801ccc57e1efe802cdd8fc618a71
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98878
Tested-by: Luboš Luňák <l.lunak@collabora.com>
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2020-07-16 13:02:33 +02:00
Luboš Luňák 08161f8535 fix encrypted parallel zip saving (tdf#134332)
ZipOutputEntryBase::processDeflated() was calling isDeflaterFinished()
to find out whether to finalize and dispose m_xCipherContext.
With ZipOutputEntryParallel this was always true, so the context
was disposed after the first call. That was originally correct, because
originally processDeflated() was called just once at the very end, but
353d4528b8 changed to calling it several
times.

Change-Id: I1e4a0c887e4ba7ac7b20fa315169eaa911335fde
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98625
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2020-07-14 10:40:24 +02:00
Noel Grandin a2fc883173 use more std::container::insert instead of std::copy
which is both more compact code, and more efficient, since the insert
method can do smarter resizing

Change-Id: I17f226660f87cdf002edccc29b4af8fd59a25f91
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96948
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-06-24 08:43:55 +02:00
Noel Grandin 3c800667b7 compact namespace in package
Change-Id: I9956f715e00a0c2814b79617f37dd0c09f049ad0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93858
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-05-09 20:01:31 +02:00
Noel Grandin 076fa17b5c loplugin:buriedassign in l,o,p*
Change-Id: Ib2dd157d43c4387eda009475311761fe2eb627cb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92241
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-04-15 19:25:53 +02:00
Noel Grandin 7bf5228525 loplugin:flatten in package
Change-Id: I4d81c7c1d241e51565d7cbc6549ac586136f0c86
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91616
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-04-03 12:39:54 +02:00
Gabor Kelemen d3e1ada454 Remove unused using declarations in oox...xmlsecurity
Found by:
run-clang-tidy-10 -checks=-*,misc-unused-using-decls

Change-Id: I3e95791e223ef01e140a6217e29a9efae428a784
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90876
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2020-03-25 09:13:27 +01:00
Noel Grandin b5da97197b Revert "loplugin:constfields in package..registry"
This reverts commit 31138ff772.

Now that we know that making fields has negative side effects
like disabling assignment operator generation.

Change-Id: I3f1ae65532f441c8be5ebca5866b8a1e1c69318c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90363
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-03-12 08:17:11 +01:00
Noel Grandin b5bde198a8 remove some unused local vars
found by my new loplugin:unusedvariableplus

Change-Id: Ic3f55f492d43a53d8850a97d44059ff127fd69a2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87573
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-01-28 09:18:31 +01:00
Dennis Francis 353d4528b8 tdf#125662: do parallel-zip in batches
In this approach the input stream is read one batch (of constant size)
at a time and each batch is compressed by ThreadedDeflater. After
we are done with a batch, the deflated buffer is processed straightaway
(directed to file backed storage).

Change-Id: I2d42f86cf5898e4d746836d94bf6009a8d3b0230
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86596
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2020-01-13 12:11:44 +01:00
Caolán McNamara 902a0c52c4 check crcs when fuzzing after all
I end up with something that fails in the fuzzing setup but which
cannot be used as a testcase in a normal build

Change-Id: I20c73aa009fdc289d95d34a8adf8ddd5882f6694
Reviewed-on: https://gerrit.libreoffice.org/84013
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
2019-11-28 16:51:22 +01:00
Noel Grandin 7a76939177 loplugin:constmethod in package
Change-Id: I44bc86a179164e1d039dd3a5f2c8a23396d870b3
Reviewed-on: https://gerrit.libreoffice.org/77931
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-22 09:34:43 +02:00
Noel Grandin ea20fcce1d close some more holes in structures
and improve the pahole script so I can just run it once over the whole
codebase

Change-Id: I7e1775974a3a61f8c0e40646158f01163ace60cc
Reviewed-on: https://gerrit.libreoffice.org/76122
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-07-23 06:46:41 +02:00
Caolán McNamara 8ba4058ede cid#1448353 Uncaught exception
Change-Id: Ia967db3f73bee9167be4fd88090b27bfdbd4aca0
Reviewed-on: https://gerrit.libreoffice.org/75881
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
2019-07-18 21:37:55 +02:00
Caolán McNamara 7c2a072d91 cid#1448443 Uninitialized pointer field
Change-Id: I664c9c6e1479466bfe5a1af35a554aaa15fac2ea
Reviewed-on: https://gerrit.libreoffice.org/75695
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
2019-07-16 16:02:38 +02:00
Stephan Bergmann 6ad13e0e5d Demote from std::unique_lock to std::scoped_lock where applicable
Change-Id: I53a019f05978bab62ad0da3d0eb08f37f8ec1e18
Reviewed-on: https://gerrit.libreoffice.org/74414
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-06-20 10:19:33 +02:00
Noel Grandin 48f62672ab loplugin:logexceptionnicely in package..reportdesign
Change-Id: Ib5438d346fa95299848aaf2144e54f5551c0a906
Reviewed-on: https://gerrit.libreoffice.org/74100
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-06-15 19:58:07 +02:00
Luboš Luňák aa44e10942 parallel deflate compression (one stream, multiple threads)
ZipPackageStream::saveChild() already had one threaded compression,
but that still uses only one thread for one stream. Many documents
contain many streams (where this is useful), but large documents
often contain one huge content.xml, which then would be compressed
using just one thread.
But it is in fact possible to do deflate in parallel on the same data,
at the cost of somewhat increased CPU usage (spread over threads).
This is handled separately from the background thread path, as
integrating these two approaches would probably be needlessly complex
(since they both internally use ThreadPool, the tasks should often
intermix and parallelize anyway).
On my 4-core (8 HT threads) machine this reduces the compression time
of tdf#113042 from 3s to 1s.

Change-Id: Ifbc889a27966f97eb1ce2ce01c5fb0b151a1bdf8
Reviewed-on: https://gerrit.libreoffice.org/73032
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2019-05-28 12:28:01 +02:00
Luboš Luňák 7cd3f267cf split out thread functionality from ZipOutputEntry
It can be easily separated out, it looked like hacked in. And
I will need to do more refactoring of the class, so this shouldn't
be more complex than necessary.

Change-Id: I302da55409e9195274907ca4939c37fbb2427b18
Reviewed-on: https://gerrit.libreoffice.org/73031
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2019-05-28 12:27:48 +02:00
Luboš Luňák ee22409ab6 try harder not to deflate small streams in a thread
E.g. with the bugdoc from tdf#93553, most of the streams to save
are actually small, they just do not provide XSeekable. Since it
seems all the streams are already fully available by the time
the zip packaging is done, fallback to XInputStream::available()
to find out if the stream is small.
With this, the zipping part of saving tdf#93553 is now down
from ~1.5s to ~0.5s.
This presumably also makes the hack for tdf#93553 unnecessary.

Change-Id: Id9bb7d835400d6d8f147f5c11ade684a549aba53
Reviewed-on: https://gerrit.libreoffice.org/73030
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2019-05-28 12:27:40 +02:00
Luboš Luňák aeb2014ba4 remove code confusion about threads vs thread tasks
A threadpool controls a number of threads that execute a number
of thread *tasks* from a queue. The API even says they are tasks.
So it's damn confusing when ZipPackageStream::saveChild()
claims to limit the number of threads to 4x the maximum number
of threads. It limits the number of queued thread tasks.

Change-Id: I317497f27a82d92a7c8566b14aaeae73a4ffef1f
Reviewed-on: https://gerrit.libreoffice.org/72677
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2019-05-21 17:25:32 +02:00
Arkadiy Illarionov 0e4c542f7a Use hasElements to check Sequence emptiness in [l-r]*
Similar to clang-tidy readability-container-size-empty

Change-Id: Idd67f332b04857a39df26bad1733aae21236f105
Reviewed-on: https://gerrit.libreoffice.org/71764
Tested-by: Jenkins
Reviewed-by: Michael Stahl <Michael.Stahl@cib.de>
2019-05-17 11:20:15 +02:00
Noel Grandin 1a5b12aa5d optimise find/insert pattern
if we're doing a find/insert on a set or a map, it is better to just do
a conditional insert/emplace operation than triggering two lookups.

Change-Id: I80da5097f5a89fe30fa348ce5b6e747c34287a8d
Reviewed-on: https://gerrit.libreoffice.org/70937
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-04-19 13:19:31 +02:00
Stephan Bergmann 2449bf48c4 Remove redundant bitwise and when converting from sal_uInt32 to sal_Int32
...which has no effect on the result, but silences benign Clang
-fsanitize=implicit-signed-integer-truncation warnings

Change-Id: I0953914a35f2a8c4caa6f75d4918e3b3366d07e8
Reviewed-on: https://gerrit.libreoffice.org/68628
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-03-03 11:03:06 +01:00
Arkadiy Illarionov 9d7620613d Simplify containers iterations in oox, opencl, package
Use range-based loop or replace with STL functions

Change-Id: I91405920d91383bc6cf13b9497d262b1f6f0a84d
Reviewed-on: https://gerrit.libreoffice.org/67848
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-02-15 12:21:28 +01:00
Noel Grandin 82b9102769 loplugin:indentation in oox..package
Change-Id: Ie50a1ad6e27786ccdaae2ba1ae96f5682c4a38f6
Reviewed-on: https://gerrit.libreoffice.org/67560
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-02-09 17:07:45 +01:00
Gabor Kelemen 0c64df2432 o3tl::make_unique -> std::make_unique in i18npool...reportdesign
Since it is now possible to use C++14, it's time to replace
the temporary solution with the standard one

Change-Id: I8bee1344f7df82536f31bc5e4ec4fd379cac1d04
Reviewed-on: https://gerrit.libreoffice.org/66704
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-01-22 08:38:28 +01:00