Commit Graph
1473 Commits
Author SHA1 Message Date
Noel 93c64a61f2 loplugin:stringview
Add new methods "subView" to O(U)String to return substring views
of the underlying data.

Add a clang plugin to warn when replacing existing calls to copy()
would be better to use subView().

Change-Id: I03a5732431ce60808946f2ce2c923b22845689ca
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105420
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-11-11 11:58:37 +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
Stephan Bergmann 00d62d03df Use the new single-instance="true" attribute in package
Change-Id: I3effdd2500de6accaa075cfc80bdd2654dc13801
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103849
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-10-02 20:42:29 +02:00
Stephan Bergmann b8bf1e11c5 struct OHierarchyElement_Impl was apparently meant to be a class
Change-Id: Id95a70b38fae40a83f21df56f13b48b2dd0f7001
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103526
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-09-28 11:21:18 +02:00
Julien Nabet 5c2263fa4e Replace list by vector in package/ohierarchyholder
+ rename OWeakStorRefList_Impl to OWeakStorRefVector_Impl
to make it more explicit

Change-Id: I231c9e582cbfb4670835fe1ef0ce41692ad8dcb3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103501
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2020-09-27 12:51:28 +02:00
Julien Nabet 21484629ef Remove unused std::list in package/xstorage
Change-Id: I4ac4176d60c29645bd8bc5922154cd3b83dac73e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103500
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2020-09-27 12:42:27 +02:00
Noel Grandin 960252e129 improve some exception messages
Change-Id: Ifc5d940fbf77ae13071c299fb6168bdc55dc5c95
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103493
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-09-27 09:50:31 +02:00
Caolán McNamara de74d98c58 OUStringLiteral/OStringLiteral coverity PARSE_ERROR workaround
do more like

commit 121771e37f
Date:   Mon Sep 21 09:17:54 2020 +0200

    Make some OUStringLiteral vars constexpr

cause coverity can live with that

Change-Id: I9efd7f848289c4865997a44c6780373068422227
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103147
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2020-09-22 12:58:14 +02:00
Stephan Bergmann 33ecd0d5c4 Change OUStringLiteral from char[] to char16_t[]
This is a prerequisite for making conversion from OUStringLiteral to OUString
more efficient at least for C++20 (by replacing its internals with a constexpr-
generated sal_uString-compatible layout with a SAL_STRING_STATIC_FLAG refCount,
conditionally for C++20 for now).

For a configure-wise bare-bones build on Linux, size reported by `du -bs
instdir` grew by 118792 bytes from 1155636636 to 1155755428.

In most places just a u"..." string literal prefix had to be added.  In some
places

  char const a[] = "...";

variables have been changed to char16_t, and a few places required even further
changes to code (which prompted the addition of include/o3tl/string_view.hxx
helper function o3tl::equalsIgnoreAsciiCase and the additional
OUString::createFromAscii overload).

For all uses of macros expanding to string literals, the relevant uses have been
rewritten as

  u"" MACRO

instead of changing the macro definitions.  It should be possible to change at
least some of those macro definitions (and drop the u"" from their call sites)
in follow-up commits.

Change-Id: Iec4ef1a057d412d22443312d40c6a8a290dc6144
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101483
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-08-28 08:07:09 +02:00
Caolán McNamara 5923d4173d Restore "bff: terminate on SAXException on malformed input"
This reverts commit 50fd69dfe2.

now that...

commit 986bd28388
Date:   Thu Aug 6 10:50:47 2020 +0100

    ofz#24641 libc++abi __cxa_exception has grown another member

solved the substantial problem

Change-Id: I38734d99a2c8d9e272547ea657555eb4b59a5052
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100974
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2020-08-19 12:00:42 +02:00
Noel Grandin 3457da6abe loplugin:stringstatic also look for local statics
Add some API to O*StringLiteral, to make it easier
to use in some places that were using O*String

Change-Id: I1fb93bd47ac2065c9220d509aad3f4320326d99e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100270
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-08-13 08:16:03 +02:00
Noel Grandin cda88ec7a4 loplugin:simplifybool a little more aggressive
with expressions like !(a && b)

Change-Id: Id2acec2a8d0eaaa8e5e37dbd2cae7281be36572e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100040
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-08-04 11:21:36 +02:00
Caolán McNamara 50fd69dfe2 ofz#23241 Revert "bff: terminate on SAXException on malformed input"
This reverts commit 58a96d3cce.

Change-Id: I9d0459c10ece1d4a8e9efeae611cf29d15ca0885
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99893
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2020-07-31 21:19:52 +02:00
Noel Grandin 5406f8a3cd package/xstor: create instances with uno constructors
See tdf#74608 for motivation.

Change-Id: If1512d63fd1089f6f8486e32106c68f495a1f3df
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99424
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-07-26 10:41:17 +02:00
Noel Grandin 2fc112e98d package: create instances with uno constructors
See tdf#74608 for motivation.

Change-Id: I17627bdd2f4f595343ad9bf524dc57cd03170b2a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98921
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-07-17 08:47:55 +02: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
Stephan Bergmann 38cfe86259 Upcoming improved loplugin:staticanonymous -> redundantstatic: package
Change-Id: Ie183cb0d374e8d9a02891a765f46583f7cc1c345
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97618
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-07-01 19:49:56 +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
Stephan Bergmann 214077401a Upcoming loplugin:elidestringvar: package
Change-Id: I10f55bff4619fe7c1cab378aa00d96cf31d0fcd8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95511
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-06-04 23:29:52 +02:00
Vasily Melenchuk 2f17679a46 package: ignore unknown encryption parameters.
Do not throw an exception if there are encryption parameters,
but they are not supported in current output format. Invalid or
unsupported encryption then fails higher up the stack.

Change-Id: I21e4cf2f73d7c218ab5444b2016e838695163ca3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/84435
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2020-05-25 10:03:53 +02:00
Noel Grandin 552b1fc70f inline some use-once typedefs
Change-Id: Idddba2f3fd05265b08dbc88edb6152d34a166052
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94730
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-05-24 10:19:49 +02:00
Michael Stahl ba0d1a850a package: ODF export: fix position of manifest:start-key-generation child
META-INF/manifest.xml[8,137]:  Error: element "manifest:start-key-generation" was found where no element may occur

The problem is that in the schema, manifest:start-key-generation
precedes key-derivation but LO writes it in swapped order.

This is apparently a workaround for a bug in OOo < 3.2 ODF import and
specific to ODF >= 1.2 because the element didn't exist in ODF 1.1; as
it turns out we don't care about OOo < 3.4 being able to load encrypted
ODF 1.2 documents anway since commit
0b7c3b7d9f "tdf#114939 officecfg,sfx2:
always use AES/SHA256 in ODF 1.2".

Change-Id: I3b62e3eba719f13e39fb24bf9792f764b24ccaeb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94413
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
2020-05-18 15:24:40 +02:00
Michael Stahl 5eda583443 package: OFFICE-3940 ODF 1.3 export of OpenPGP encryption
Import was implemented with a7bf6488eb
but it doesn't correspond to the schema so see previous commit.

Change-Id: Ic19db07da20e88d6533509217a70983938e61beb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93088
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
2020-05-15 17:51:43 +02:00
Michael Stahl 4f1b0f7d52 package: OFFICE-3940 ODF 1.3 import of OpenPGP encryption
This was supposed to be implemented by commit
a7bf6488eb
"ODF1.3: import new OpenPGP encryption markup"
but it turns out that the ODF 1.3 cs01 schema differs from the
implementation:

in ODF 1.3 cs01 we have

 <manifest:encrypted-key>
  <manifest:encryption-method .../>
  <manifest:keyinfo>
    <manifest:PGPData>
    </manifest:PGPData>
  </manifest:keyinfo>
  <manifest:CipherData>
  </manifest:CipherData>
 </manifest:encrypted-key>

whereas the implementation expects

 <manifest:keyinfo>
  <manifest:encrypted-key>
   <manifest:encryption-method .../>
    <manifest:PGPData>
    </manifest:PGPData>
   <manifest:CipherData>
   </manifest:CipherData>
  </manifest:encrypted-key>
 </manifest:keyinfo>

Ideally the inner manifest:keyinfo should be manifest:KeyInfo but
not sure if that really matters.

Change-Id: I407321c857e7b3ed9f4d04568ca2ea116764b3da
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94309
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
2020-05-15 17:51:16 +02:00
Noel Grandin 366d08f2f6 new loplugin:simplifypointertobool
Change-Id: Iff68e8f379614a6ab6a6e0d1bad18e70bc76d76a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91907
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-05-10 12:02:44 +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
Onur Yilmaz 9359d9a94d tdf#88205: Adapt uses of css::uno::Sequence to use initializer_list ctor
Change-Id: Ie5a381fc5e5b73490ab8b2036ef2a1164e475e8f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87557
Tested-by: Jenkins
Reviewed-by: Muhammet Kara <muhammet.kara@collabora.com>
2020-01-28 21:21:58 +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
Noel Grandin 51b5b93092 remove some unused local vars
found by a more aggressive variant of loplugin:unusedvariables.

This is my first pass, committing the simplest and most obviously
unnecessary vars

Change-Id: I9676a6e39a101937097788548764506c93811c57
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87414
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-01-26 08:01:42 +01:00
Noel Grandin b9fe4f26ea rename some local variables
mostly to make the job of my very aggressive unused local vars plugin
easier

Change-Id: Ifc21a920841f8589f8b7e10de39dba6622a5d501
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87399
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-01-26 08:01:13 +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
Dennis Francis d98cc8f881 Revert "tdf#125662: disable parallel-zip if the memory..."
This reverts commit 0b8ae87250.
A better fix will follow this patch.

Change-Id: I4ff8d71bf2401bae2e2071c369e3746b8b7c72bb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86595
Tested-by: Jenkins
Reviewed-by: Dennis Francis <dennis.francis@collabora.com>
2020-01-13 12:09:28 +01:00
Mesut Çifci c4f0c87b2f tdf#88205 Adapt uses of css::uno::Sequence to use initializer_list ctor
Change-Id: I1c1e7b42211c51f572698efd3135e388f8fb2979
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86648
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-01-13 10:48:02 +01:00
Yusuf Keten 1be03e47df tdf88205 Adapt uses of css::uno::Sequence to use initializer_list ctor
Change-Id: I5eb9c58f511a6ded473eb3fb998fd21584c227d8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86607
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-01-12 17:09:42 +01:00
Dennis Francis 0b8ae87250 tdf#125662: disable parallel-zip if the memory...
required to carry it out will cause a breach of addressable memory
limit. This can happen in 32bit OSes, where the physical memory limit is
more than the process addressable memory limit. For example in Win32,
a process can address only upto 2GB.

More specifically, avoid using ZipOutputEntryParallel
which rougly needs twice the memory compared to its counterparts.

Change-Id: I4d1abbf75e928188bcf806fcf1e5872b1e51b502
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/84394
Tested-by: Jenkins
Reviewed-by: Dennis Francis <dennis.francis@collabora.com>
2020-01-04 07:58:06 +01:00
Mike Kaganski dd198398b6 tdf#93389: keep encryption information for autorecovered MS formats
The autorecovery data is stored in ODF, regardless of the original
document format. When restoring, type detection generates ODF data,
which is stored in the media descriptor attached to document, even
after real filter was restored (see AutoRecovery::implts_openDocs).
If real filter is not ODF, then at the save time, it doesn't find
necessary information in encryption data, and makes not encrypted
package.

This patch adds both MS binary data, and OOXML data, to existing
ODF data for recovered password-protected documents (regardless of
their real filter).

TODO: only add required information to encryption data: pass real
filter name to DocPasswordHelper::requestAndVerifyDocPassword from
AutoRecovery::implts_openDocs.

Change-Id: I4749c5ec028ca61bddf7cd77bc5969a97b1de199
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86201
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-01-04 07:40:21 +01:00
Noel Grandin 7c18da2dc6 sal_Char->char in oox..registry
Change-Id: Icc7f2a32696c30317c1ee77ef39d682d5f5a80b9
Reviewed-on: https://gerrit.libreoffice.org/85512
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-12-19 19:17:40 +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
Stephan Bergmann ae71a0adef Remove some redundantly user-declared copy ctors and assignment ops
...that trigger -Werror,-Wdeprecated-copy ("definition of implicit copy
{constructor, assignment operator} for ... is deprecated beause it has a
user-declared copy {assignment operator, constructor}") new in recent Clang 10
trunk (and which apparently warns about more cases then its GCC counterpart, for
which we already adapted the code in the past, see e.g. the various
"-Werror=deprecated-copy (GCC trunk towards GCC 9)" commits)

Change-Id: Ie37bd820e6c0c05c74e1a862bb1d4ead5fb7cc9c
Reviewed-on: https://gerrit.libreoffice.org/83698
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-11-25 23:07:42 +01:00
Julien Nabet b9448acf3c cppcheck: performing init in init list (oox, package, sal, sax)
Change-Id: I77e28f02516ab25ff6680970dc13d52cfa90eac1
Reviewed-on: https://gerrit.libreoffice.org/83620
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2019-11-24 22:46:19 +01:00
Stephan Bergmann f853ec317f Extend loplugin:external to warn about classes
...following up on 314f15bff0 "Extend
loplugin:external to warn about enums".

Cases where free functions were moved into an unnamed namespace along with a
class, to not break ADL, are in:

  filter/source/svg/svgexport.cxx
  sc/source/filter/excel/xelink.cxx
  sc/source/filter/excel/xilink.cxx
  svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx

All other free functions mentioning moved classes appear to be harmless and not
give rise to (silent, even) ADL breakage.  (One remaining TODO in
compilerplugins/clang/external.cxx is that derived classes are not covered by
computeAffectedTypes, even though they could also be affected by ADL-breakage---
but don't seem to be in any acutal case across the code base.)

For friend declarations using elaborate type specifiers, like

  class C1 {};
  class C2 { friend class C1; };

* If C2 (but not C1) is moved into an unnamed namespace, the friend declaration
must be changed to not use an elaborate type specifier (i.e., "friend C1;"; see
C++17 [namespace.memdef]/3: "If the name in a friend declaration is neither
qualified nor a template-id and the declaration is a function or an
elaborated-type-specifier, the lookup to determine whether the entity has been
previously declared shall not consider any scopes outside the innermost
enclosing namespace.")

* If C1 (but not C2) is moved into an unnamed namespace, the friend declaration
must be changed too, see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71882>
"elaborated-type-specifier friend not looked up in unnamed namespace".

Apart from that, to keep changes simple and mostly mechanical (which should help
avoid regressions), out-of-line definitions of class members have been left in
the enclosing (named) namespace.  But explicit specializations of class
templates had to be moved into the unnamed namespace to appease
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92598> "explicit specialization of
template from unnamed namespace using unqualified-id in enclosing namespace".

Also, accompanying declarations (of e.g. typedefs or static variables) that
could arguably be moved into the unnamed namespace too have been left alone.

And in some cases, mention of affected types in blacklists in other loplugins
needed to be adapted.

And sc/qa/unit/mark_test.cxx uses a hack of including other .cxx, one of which
is sc/source/core/data/segmenttree.cxx where e.g. ScFlatUInt16SegmentsImpl is
not moved into an unnamed namespace (because it is declared in
sc/inc/segmenttree.hxx), but its base ScFlatSegmentsImpl is.  GCC warns about
such combinations with enabled-by-default -Wsubobject-linkage, but "The compiler
doesn’t give this warning for types defined in the main .C file, as those are
unlikely to have multiple definitions."
(<https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/Warning-Options.html>)  The
warned-about classes also don't have multiple definitions in the given test, so
disable the warning when including the .cxx.

Change-Id: Ib694094c0d8168be68f8fe90dfd0acbb66a3f1e4
Reviewed-on: https://gerrit.libreoffice.org/83239
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-11-22 12:57:32 +01:00
Vasily Melenchuk e0cced9d4c do not clean up EncryptionData during SaveAs
As the SID_ENCRYPTIONDATA and SID_PASSWORD are used for setting
password together, EncryptionData should be removed only
when Password was set (reset of Password protection for the document).
Elsewhere EncryptionData should remain as is, while it could
contain encryption data used for opened document.

Change-Id: I46b757af81e68ad4781e83b1a0e0b6da3a5e13e1
Change-Id: I1213ec55d6dc42f062930467976de45c73152f0b
Reviewed-on: https://gerrit.libreoffice.org/82616
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2019-11-15 12:50:38 +01:00
Noel Grandin e276c81264 size some stringbuffer to prevent re-alloc
I started with 32 and kept doubling the size until the site
did not need re-alloc, but clamped it at 512 (e.g. in emfio/).

Change-Id: Ib7caf35a1b7e42b0e4ed8aa812493449e3eefc8f
Reviewed-on: https://gerrit.libreoffice.org/81540
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-10-26 12:38:33 +02:00
Stephan Bergmann 8b4719c29f Rename OUStringLiteral1 to OUStringChar
It started out as a wrapper around character literals, but has by now become a
wrapper around arbitrary single characters.  Besides updating the documentation,
this change is a mechanical

  for i in $(git grep -Fl OUStringLiteral1); do sed -i -e s/OUStringLiteral1/OUStringChar/g "$i"; done

Change-Id: I1b9eaa4b3fbc9025ce4a4bffea3db1c16188b76f
Reviewed-on: https://gerrit.libreoffice.org/80892
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-10-17 07:28:49 +02:00
Noel Grandin f13c6ad5f0 new loplugin:bufferadd
look for OUStringBuffer append sequences that can be turned
into creating an OUString with + operations

Change-Id: Ica840dc096000307b4a105fb4d9ec7588a15ade6
Reviewed-on: https://gerrit.libreoffice.org/80809
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-10-15 14:33:57 +02:00