Commit Graph

2871 Commits

Author SHA1 Message Date
51cf057f4e tdf#101185 OString concatanations for efficiently coding
Change-Id: I1d3dd633b7de2dcd64f6cde892da3a5f02fcf80d
Reviewed-on: https://gerrit.libreoffice.org/27844
Reviewed-by: jan iversen <jani@documentfoundation.org>
Tested-by: jan iversen <jani@documentfoundation.org>
2016-08-04 05:38:19 +00:00
403eefe81b tdf#101136 dbaccess: use SolarMutex in ModelMethodGuard
There is a deadlock here when storing a ODatabaseDocument on a
non-main-thread while the main thread dispatches some event that calls
into ODatabaseDocument, while holding SolarMutex.

The storing of the document also stores BASIC libraries, and since
commit fca62934f492125ea6728fd6d09f0c66c9e4fa69 the SfxLibraryContainer
uses SolarMutex for locking.

Now we could re-investigate that problem, but it seems unrealistic to
expect ODatabaseDocument's implementation will never call anything
that acquires SolarMutex.

Resistance is futile.  Your locking scheme will be assimilated.

Change-Id: I337d286f3e96c6b2e0dde8682b31faab3f508d20
Reviewed-on: https://gerrit.libreoffice.org/27590
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
2016-08-03 11:27:44 +00:00
a2095b1514 comphelper,vcl: let DeInitVCL() join some AsyncEventNotifier threads
comphelper::AsyncEventNotifier is an amazing class that dispatches
events in separate threads, no doubt implemented during times of
exuberant optimism about the tractability of shared-state
multi-threading.

Unfortunately the authors forgot to think about how all those awesome
threads will be joined, so if they are somehow blocked, then it may well
happen that the events are dispatched when the main thread is already in
DeInitVCL, and the objects required for the dispatching already smell
somewhat funny.

This happens quite reproducibly when changing dbaccess' ModelMethodGuard
to lock the SolarMutex too, then CppunitTest_dbaccess_RowSetClones
crashes in DeInitVCL() because one AsyncEventNotifier thread was blocked
until then by SolarMutexGuard, and this test never Yields once its
document is loaded.

Try to fix this by joining the "DocumentEventNotifier" threads from
DeInitVCL() itself.

Since there's no rtl::WeakReference to go with rtl::Reference, refactor
the AsyncEventNotifier and create a new AsyncEventNotifierAutoJoin
that has to be used with std::shared_ptr and std::weak_ptr.

Change-Id: I50a0749795acb04b0776e543f7125767b697ea35
Reviewed-on: https://gerrit.libreoffice.org/27581
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
2016-07-29 10:05:47 +00:00
508c95f1b6 improve passstuffbyref return analysis
Change-Id: I4258bcc97273d8bb7a8c4879fac02a427f76e18c
Reviewed-on: https://gerrit.libreoffice.org/27317
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-07-27 06:48:25 +00:00
6e72f0251b new loplugin unnecessary override
Change-Id: I88d3e33823d68745b98625050a8a274f9ef04bcb
Reviewed-on: https://gerrit.libreoffice.org/27135
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
2016-07-15 14:05:41 +00:00
38ae35db26 tdf#84635 - Slow layout of large tables
Based on suggestion from Aron Budea.
And do something similar to most other places keeping vectors
of weak references where the code looks like it will hold more than
a few entries.

Measurements:
the 26 page file file takes
    51s without my path
    15s with this patch
the 69 page file file takes
    5m28 without my path
    51s with this patch
the 84 page file file takes
    8m28 without my path
    58s with this patch

Change-Id: I8da94c525fc73ebd969e0343c6f074be4f0063b1
Reviewed-on: https://gerrit.libreoffice.org/27093
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-07-13 13:08:16 +00:00
9600746f22 loplugin:redundantcast: redundant static_casts in dbaccess
Change-Id: Ia959a92044ba2fb7fef1938bd236e4a3a9f55908
2016-07-08 16:47:31 +02:00
cd71034b26 comphelper::OBaseMutex -> cppu::BaseMutex
convert usage of deprecated class, and remove the old class

Change-Id: I19fb9271090d19e5531622b58492e1a848d306e2
Reviewed-on: https://gerrit.libreoffice.org/26843
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-07-04 06:49:07 +00:00
bb1e59d596 Simplify OPropertyContainerHelper::registerPropertyNoMember's _pInitialValue
Change-Id: Ibfb27b3eded45e2646dada37ce3663f427985ae9
2016-06-17 19:40:58 +02:00
10aaf33986 convert some manual ref-counting in dbaccess
Change-Id: I2df7b6b79bff4a5c7358288518c5518b6a7032bf
Reviewed-on: https://gerrit.libreoffice.org/26051
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-06-09 06:43:57 +00:00
d0bc637426 Normalize on using @throws instead of @raise[s]
...as the former is used almost exclusively

Change-Id: I38ff11cd0d5125534550df99dd427666011c3b7b
2016-06-06 17:07:35 +02:00
0b23eec200 teach refcounting clang plugin about uno::Reference
uno::Reference is only allowed to used with classes that have a
::static_type member.
So convert all those places to rtl::Reference.

Maybe we need some LIBO_INTERNAL_ONLY constructors on rtl::Reference and
uno::Reference to make this a little smoother?

Change-Id: Icdcb35d71ca40a87b1dc474096776412adbfc7e3
Reviewed-on: https://gerrit.libreoffice.org/25516
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-31 06:25:45 +00:00
2c8fe2e737 update unusedmethods plugin to deal with constructors
and fix the operator< implementations in some of the other
plugins too.

Change-Id: Ie5631e0cdc8d2a994ad2af2533cdb558a6cfc035
Reviewed-on: https://gerrit.libreoffice.org/25057
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-18 10:03:44 +00:00
d96c114171 clang-tidy modernize-make-shared
Change-Id: I3fa866bfb3093fc876474a9d9db29fe05dc2af3a
Reviewed-on: https://gerrit.libreoffice.org/25056
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-18 06:58:44 +00:00
a9ff36a1e9 Fix typos
Change-Id: If7262e114b5b4cd40e9c0a8929940199ea747595
Reviewed-on: https://gerrit.libreoffice.org/25025
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: jan iversen <jani@documentfoundation.org>
2016-05-16 06:18:47 +00:00
c567c0cf44 dbaccess: replace boost::bind with C++11 lambdas
Change-Id: I468f9c7af9c8c8189c51790e0301dd8c60a9f83c
2016-05-12 11:08:25 +02:00
3742748699 Fix typos
Change-Id: I1c1894fcf533291b34a662b6efb96dcfa75b92b3
Reviewed-on: https://gerrit.libreoffice.org/24760
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
2016-05-10 19:13:31 +00:00
14cd5182c5 Replace fallthrough comments with new SAL_FALLTHROUGH macro
...which (in LIBO_INTERNAL_ONLY) for Clang expands to [[clang::fallthrough]] in
preparation of enabling -Wimplicit-fallthrough.  (This is only relevant for
C++11, as neither C nor old C++ has a way to annotate intended fallthroughs.)

Could use BOOST_FALLTHROUGH instead of introducing our own SAL_FALLTHROUGH, but
that would require adding back in dependencies on boost_headers to many
libraries where we carefully removed any remaining Boost dependencies only
recently.  (At least make SAL_FALLTHROUGH strictly LIBO_INTERNAL_ONLY, so its
future evolution will not have any impact on the stable URE interface.)  C++17
will have a proper [[fallthroug]], eventually removing the need for a macro
altogether.

Change-Id: I342a7610a107db7d7a344ea9cbddfd9714d7e9ca
2016-05-10 16:42:16 +02:00
6e70103da0 While at it, delete Any functions on sal_Bool*
(at least for LIBO_INTERNAL_ONLY), to help further reduce the occurrences of
sal_Bool across the code base

Change-Id: I70654a0cb56655984c717b7b894f26c9ab47536e
2016-05-04 11:59:23 +02:00
0b1e4a3067 Prevent Any::setValue from reinterpreting bool* as sal_Bool*
...which only happens ot work in environments where sizeof (bool) == 1.  The
simpler alternative is to use the operator <<= template without passing explicit
UNO type information, anyway.

The std::nullptr_t overloads are needed to disambiguate calls with a nullptr
argument.  (Which can at least be meaningful for VOID, but for other types what
it happens to do is store a default value of the given type.)  As std::nullptr_t
is only C++11, this all needs to be LIBO_INTERNAL_ONLY.

Change-Id: Iff06a6ba94250bd4ae4afc937c2a2bfa75f0888f
2016-05-03 15:26:01 +02:00
d15163eceb Fix typos
Change-Id: Ideafa411b53fe4a5f2e6559be10c4cb82b58a256
Reviewed-on: https://gerrit.libreoffice.org/24543
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2016-05-01 09:46:27 +00:00
a5810faae3 clang-tidy modernize-loop-convert in d*
Change-Id: I0830a41b48e884ef63d32b5873c7007195659bb9
2016-04-25 11:57:07 +02:00
b2e86d2e26 Fix typos
Change-Id: Iea11112a1bf1ff934de0e355b9e81979aa1966a3
Reviewed-on: https://gerrit.libreoffice.org/24286
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: jan iversen <jani@documentfoundation.org>
2016-04-22 06:47:06 +00:00
6009d33823 loplugin:salbool: Automatic rewrite of sal_False/True
Change-Id: I5cd8fd979fd4caa3d7cde599096627bfdd0dec7e
2016-04-20 17:25:39 +02:00
80018b6006 Replace map to sal_Bool with map to bool
Change-Id: Ib75d197293d7854976b131f61dc78536a4ac8a97
2016-04-20 17:25:34 +02:00
991e3cefad Avoid reserved identifiers
Change-Id: I2b0fe700057fea790e8b5d651770b27f0a553fbf
2016-04-18 15:30:05 +02:00
29ad0f5d16 dbaccess: replace boost::bind with C++11 lambdas
Change-Id: I84d7e2e3b00985815fb1945fbaf87cf5944bd8e6
Reviewed-on: https://gerrit.libreoffice.org/24116
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
2016-04-18 08:42:26 +00:00
789055bc2a clang-tidy performance-unnecessary-copy-initialization
probably not much performance benefit, but it sure is good at
identifying leftover intermediate variables from previous
refactorings.

Change-Id: I3ce16fe496ac2733c1cb0a35f74c0fc9193cc657
Reviewed-on: https://gerrit.libreoffice.org/24026
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Tested-by: Noel Grandin <noelgrandin@gmail.com>
2016-04-18 07:37:31 +00:00
150ac9cf05 clean-up: unused using declarations and includes
Searched source for using declarations.
Checked if those symbols reappear in the source file,
even in comments or dead code but not in #include statements.
If they don't reappear, remove the declaration.
Remove includes whose symbol got removed.

Change-Id: Ibb77163f63c1120070e9518e3dc0a78c6c59fab0
Reviewed-on: https://gerrit.libreoffice.org/24148
Reviewed-by: Jochen Nitschke <j.nitschke+logerrit@ok.de>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Tested-by: Noel Grandin <noelgrandin@gmail.com>
2016-04-18 07:25:24 +00:00
9fce680e27 loplugin:passstuffbyref in dbaccess
Change-Id: Ice52ebbfeca45c8587fdcd0d3dea5c02c7de27e3
2016-04-13 13:27:51 +02:00
9576cf9c3f Avoid reserved identifiers
Change-Id: I15609fb6b11606d865d8817f4a63ba8816f7384e
2016-04-12 20:03:46 +02:00
dbd1f4b75a clang-tidy performance-unnecessary-value-param in dbaccess
Change-Id: I9cec61867b4e6e8abde7749047974c6de87b9669
2016-04-12 11:25:18 +02:00
4c7ec9f112 cleanup: remove unused com/sun/star/uno includes
Sequence.h(xx), Any.h(xx) and Type.h(xx)
and remove unused using-declarations from these files.

Add a few missing includes provided by them.

Change-Id: I6b91b6d1fdf9d0496dd546c0aab9bdcc6831a5d4
Reviewed-on: https://gerrit.libreoffice.org/23805
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-04-12 06:38:26 +00:00
b15ee18a5e cppcheck: silence warnings assertWithSideEffect
Mark some class methods as pure.
warnings look like this:
> dbaccess/source/core/api/RowSetBase.cxx
> 593    assertWithSideEffect	398	warning	Assert statement calls
> a function which may have desired side effects: 'isAfterLast'.

Change-Id: I1b69340c3714be4678b599fa9a8ca933122aa857
Reviewed-on: https://gerrit.libreoffice.org/23981
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Tested-by: Noel Grandin <noelgrandin@gmail.com>
2016-04-11 08:19:20 +00:00
922ee9a9da tdf#94306 replace boost::noncopyable in d...
dbaccess, desktop and drawinglayer.

Replace with C++11 delete copy-constructur
and copy-assignment.
Nothing special, only one unused include in
dbaccess/source/filter/xml/xmlfilter.cxx.

Change-Id: Iebabbc658215162450d4caf08d4fb2f116c456d9
Reviewed-on: https://gerrit.libreoffice.org/23918
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: David Tardon <dtardon@redhat.com>
2016-04-08 17:42:57 +00:00
6b2d75f966 cppcheck: noExplicitConstructor
Change-Id: I68310e2abc8f0ca114adb2b52f82157a0f455202
2016-04-04 11:16:06 +01:00
f7a75a66fa cleanup: remove unused Reference.h(xx) includes
and unused using-declarations from Reference.h

Change-Id: I297a7ae6044fa329d245ecf08fd5c4cb930f5b19
Reviewed-on: https://gerrit.libreoffice.org/23735
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2016-04-02 19:01:24 +00:00
9e596250a6 tdf#97966 Drop 'static' keywords
Including no keywords from extern "C" blocks

Change-Id: Icff7c0308843d6a7608be24d7fcf11fa079c7b72
Reviewed-on: https://gerrit.libreoffice.org/23672
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2016-04-01 06:44:34 +00:00
6439005484 use SAL_N_ELEMENTS more widely
found using
   git grep -n 'sizeof.*/.*sizeof.*[0]'

Change-Id: Icd4a6cc1ca8ec8ebd68e1701a02789c74cf0eb2a
2016-03-31 11:30:36 +02:00
1aa4df615f use SAL_N_ELEMENTS in for loops
for with
  git grep -n 'for.*sizeof'

Change-Id: I6211024385e03ac5eeeb38690d2c1c699e015c2f
Reviewed-on: https://gerrit.libreoffice.org/23569
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-03-31 08:00:13 +00:00
2b60e64c18 Use const_iterator when possible (whole dbaccess)
Change-Id: I3d10a7914353b384fc7a2195a70398869f675211
Reviewed-on: https://gerrit.libreoffice.org/23570
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2016-03-28 18:39:16 +00:00
57bf3a3340 off-by-one error: columns are numbered from one, but the array from 0
Change-Id: I14ef451999fa1f9d57757a9e231fc66be4e53f3a
2016-03-21 16:43:16 +01:00
dd351c8524 loplugin:constantparam in dbaccess
Change-Id: Icfe7d3d4630f4b5b3b2491ba56245257bad31bb8
Reviewed-on: https://gerrit.libreoffice.org/23349
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-03-18 08:33:50 +00:00
4331b137fd Resolves: tdf#92617 don't crash if insertRow gets triggered during insertRow
insertRow notifies listeners that it is going to insert contents,
if a script listens to that and eventually triggers insertRow again then
one inside the other causes corruption and pestilence

Change-Id: I6b568d0a67f6108536d58c407b79d02bf29f297a
2016-03-17 14:51:27 +00:00
78f0d15893 loplugin:constantparam in xmloff/
Change-Id: I376f1d4ac65de584f9caa6ba8e25e43216374112
Reviewed-on: https://gerrit.libreoffice.org/23295
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Tested-by: Noel Grandin <noelgrandin@gmail.com>
2016-03-16 11:35:38 +00:00
218cd09611 inline some use-once macros
Change-Id: I7ebd8fe70b083a772118a1aab8cdfbf795d6f1e5
Reviewed-on: https://gerrit.libreoffice.org/23235
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-03-14 11:06:48 +00:00
018c6adf85 tdf#97966: Remove 'static' keywords
Change-Id: I0d9837a7ccecd606e0d43b53f8b920547b0d0bcd
Reviewed-on: https://gerrit.libreoffice.org/23132
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
2016-03-11 08:56:20 +00:00
29fc44c6f8 fix debugging stl iterators assert in bibliography toolbar
bibliography: click autofilter toolbar icon to get drop down, select an
entry and assert on use of invalid iterators.

In this specific case we want to reset them all, so add a new simpler
method to just do that and not do the (always supposed to be true) comparison

note: in ORowSet::checkUpdateIterator
at m_aCurrentRow = m_pCache->m_aInsertRow; these iterators are then invalid
the whole iterator caching and fiddling here is concerning.

Change-Id: I74952896f47ac482b6bacb26afe5b1cfcf6bc49c
2016-03-09 09:50:08 +00:00
1b1080fe8a loplugin:constantparam in dbaccess
Change-Id: I44b5a586a1b0da47e032dff097ebf545f5fe76fc
2016-03-09 10:07:47 +02:00
576ab77255 tdf#91794 Remove OSL_DEBUG_LEVEL > 1 conditionals
I either replaced OSL_DEBUG_LEVEL > 1 with OSL_DEBUG_LEVEL > 0
statements or i used SAL_INFO(..)s

Change-Id: Iefb6b83e86e1767e55600b6e1989ee91207fb220
Reviewed-on: https://gerrit.libreoffice.org/23000
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: jan iversen <jani@documentfoundation.org>
2016-03-08 13:31:09 +00:00