Age | Commit message (Collapse) | Author |
|
"Find explicit casts from signed to unsigned integer in comparison against
unsigned integer, where the cast is presumably used to avoid warnings about
signed vs. unsigned comparisons, and could thus be replaced with
o3tl::make_unsigned for clairty." (compilerplugins/clang/unsignedcompare.cxx)
o3tl::make_unsigned requires its argument to be non-negative, and there is a
chance that some original code like
static_cast<sal_uInt32>(n) >= c
used the explicit cast to actually force a (potentially negative) value of
sal_Int32 to be interpreted as an unsigned sal_uInt32, rather than using the
cast to avoid a false "signed vs. unsigned comparison" warning in a case where
n is known to be non-negative. It appears that restricting this plugin to non-
equality comparisons (<, >, <=, >=) and excluding equality comparisons (==, !=)
is a useful heuristic to avoid such false positives. The only remainging false
positive I found was 0288c8ffecff4956a52b9147d441979941e8b87f "Rephrase cast
from sal_Int32 to sal_uInt32".
But which of course does not mean that there were no further false positivies
that I missed. So this commit may accidentally introduce some false hits of the
assert in o3tl::make_unsigned. At least, it passed a full (Linux ASan+UBSan
--enable-dbgutil) `make check && make screenshot`.
It is by design that o3tl::make_unsigned only accepts signed integer parameter
types (and is not defined as a nop for unsigned ones), to avoid unnecessary uses
which would in general be suspicious. But the STATIC_ARRAY_SELECT macro in
include/oox/helper/helper.hxx is used with both signed and unsigned types, so
needs a little oox::detail::make_unsigned helper function for now. (The
ultimate fix being to get rid of the macro in the first place.)
Change-Id: Ia4adc9f44c70ad1dfd608784cac39ee922c32175
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87556
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I793f91a1fe601cff367be7c178f4e712f0f97117
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87488
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I7454640278f4af0f71f429b45c9f1e40f7be0545
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87433
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Julien Nabet <serval2412@yahoo.fr>
|
|
...using more appropriate parameter types, replacing cheesy OSL_ASSERT overflow
checks with cap_ssize_t, and replacing one remaining good OSL_ASSERT in
safeWrite with assert.
Change-Id: I6105ba5135216333e68003458be7ca28f1715a51
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86807
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
The transition to java - interestingly to free the passed buffer
was showing on profiles.
Also cleanup the /assets// handling a little.
Change-Id: Id1f4f6e60896c3f42fcbf761e535b68318e0a0a2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86169
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Michael Meeks <michael.meeks@collabora.com>
|
|
Change-Id: I6d32942960a5e997f16eb1301c45495661cd4cea
Reviewed-on: https://gerrit.libreoffice.org/85514
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
this is a very very useful warning when libraries fail to load
Change-Id: I09bf64f6c65f285d6ab41f988b255a4842233428
Reviewed-on: https://gerrit.libreoffice.org/84314
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: Id28d593d94fc176194871db32c1c5a287b98a26a
Reviewed-on: https://gerrit.libreoffice.org/84319
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
(to silence upcoming loplugin:unusedmember)
Change-Id: I86e340e6ade043e020609f0f4da58ba94be6ab1b
Reviewed-on: https://gerrit.libreoffice.org/83817
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
add attribute markup
Change-Id: I8d70513ae3e7abf80368016343f69060f197eae0
Reviewed-on: https://gerrit.libreoffice.org/83586
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
...following up on 314f15bff08b76bf96acf99141776ef64d2f1355 "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>
|
|
code reads a .ui file to show a menu to edit/delete that pagebreak. That
file was not packaged in the Android viewer and causes an exception that
is not handled and ultimately results in a crash.
Change-Id: Ie73d886daf9202ba12e1b5a241bc7b6d184ae770
Reviewed-on: https://gerrit.libreoffice.org/83104
Tested-by: Jenkins
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
|
|
To mitigate the dangers of silently breaking ADL when moving enums into unnamed
namespaces (see the commit message of 206b5b2661be37efdff3c6aedb6f248c4636be79
"New loplugin:external"), note all functions that are affected. (The plan is to
extend loplugin:external further to also warn about classes and class templates,
and the code to identify affected functions already takes that into account, so
some parts of that code are not actually relevant for enums.)
But it appears that none of the functions that are actually affected by the
changes in this commit relied on being found through ADL, so no adaptions were
necessary for them.
(clang::DeclContext::collectAllContexts is non-const, which recursively means
that External's Visit... functions must take non-const Decl*. Which required
compilerplugins/clang/sharedvisitor/analyzer.cxx to be generalized to support
such Visit... functions with non-const Decl* parameters.)
Change-Id: Ia215291402bf850d43defdab3cff4db5b270d1bd
Reviewed-on: https://gerrit.libreoffice.org/83001
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
found by the simple expidient of putting asserts in
the resize routine. Where an explicit const size is used,
I started with 32 and kept doubling until that site
did not need resizing anymore.
Change-Id: I998787edc940d0a3ba23b5ac37131ab9ecd300f4
Reviewed-on: https://gerrit.libreoffice.org/81138
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I3e5efb9be471814b5dabf501feb93a65e9b5bcd3
Reviewed-on: https://gerrit.libreoffice.org/81022
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
...to find matches of
... << s.getStr()
(for the rtl string classes) that can be written as just
... << s
Some notes:
* The OUStringToOString(..., RTL_TEXTENCODING_UTF8) is left explicit in
desktop/source/app/crashreport.cxx (even though that would also be done
internally by the "<< OUString" operator) to clarify that these values are
written out as UTF-8 (and not as what that operator << happens to use, which
just also happens to be UTF-8).
* OUSTRING_TO_CSTR (include/oox/helper/helper.hxx) is no longer used now.
* Just don't bother to use osl_getThreadTextEncoding() in the SAL_WARN in
lingucomponent/source/hyphenator/hyphen/hyphenimp.cxx.
* The toUtf8() in the SAL_DEBUG in pyuno/source/module/pyuno_module.cxx can just
go, too.
Change-Id: I4602f0379ef816bff310f1e51b57c56b7e3f0136
Reviewed-on: https://gerrit.libreoffice.org/80762
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
which defeat the *StringConcat optimisation.
Also make StringConcat conversions treat a nullptr as an empty string,
to match the O*String(char*) constructors.
Change-Id: If45f5b4b6a535c97bfeeacd9ec472a7603a52e5b
Reviewed-on: https://gerrit.libreoffice.org/80724
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I5803aa2498654c579f9fe6293e5204aa63edd589
Reviewed-on: https://gerrit.libreoffice.org/80607
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: Icfa358476db3166c29e893c09ec943aa3c38dba3
Reviewed-on: https://gerrit.libreoffice.org/80520
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: I6febe3d48fc9018b373a940d88d2afeefad7502c
Reviewed-on: https://gerrit.libreoffice.org/80355
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
Apply the constmethod plugin, but only to accessor-type methods, e.g.
IsFoo(), GetBar(), etc, where we can be sure of that
constifying is a reasonable thing to do.
Change-Id: Ibc97f5f359a0992dd1ce2d66f0189f8a0a43d98a
Reviewed-on: https://gerrit.libreoffice.org/74269
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
The idea is to internally in sal/osl/unx/ use OString instead of OUString to
represent pathnames, so that the OString carries the actual bytes that make up
the pathname. At the boundary of translating between pathname OStrings and file
URL OUStrings, translate sequences of bytes that are valid according to
osl_getThreadTextEncoding() into UTF-8 and translate other bytes into individual
(percent-encoded) bytes in the file URL.
This change required duplicating some of the internal functionality in
sal/osl/unx/ for both OString and OUString, and to make part of sal/rtl/uri.cxx
accessible from sal/osl/unx/ via new sal/inc/uri_internal.hxx.
Change-Id: Id1ebaebe9e7f2d21f350f6b1a07849edee54331f
Reviewed-on: https://gerrit.libreoffice.org/78798
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I68ea0a46bcaaadb455f2f2cc6e53950e2f26a763
Reviewed-on: https://gerrit.libreoffice.org/79003
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
"error: compound assignment with ‘volatile’-qualified left operand is
deprecated" in C++20 mode
Change-Id: I62825237a2f4caf359f5f116ab4097ae6b9376e6
Reviewed-on: https://gerrit.libreoffice.org/78975
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I79f87f033eeb67d1750bb595d311d74ef3db6ce9
Reviewed-on: https://gerrit.libreoffice.org/78795
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
|
|
The w32 implementation preserves all attributes of the destination
file, the unx one preserved none of them.
Bring the unx osl_replaceFile() closer to the w32 by preserving the gid
of the destination file as a start.
[ No testcase, we support building on systems where the user is part of
a single group only, and it's not possible to verify the effect of this
change in such environments. ]
Change-Id: I722d4802df34caf71a9dc0db1a3df8b76acb9de6
Reviewed-on: https://gerrit.libreoffice.org/78789
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
|
|
Change-Id: Iafa953725c1ca8e6f3032945dc0700ae989519b9
Reviewed-on: https://gerrit.libreoffice.org/78671
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: Iec4c2ff8c8239069f95fff195c49fac9f7c865d4
Reviewed-on: https://gerrit.libreoffice.org/78656
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: Ifa1491a1af1d3c74d84ec4d6bec79fcf7a5d6bf4
Reviewed-on: https://gerrit.libreoffice.org/78653
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I0165a14f159a6c2c7bce84d1ca646435146d1da0
Reviewed-on: https://gerrit.libreoffice.org/78643
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: Ia9505298fe92d62d716e2c28ac0a5098c4b61121
Reviewed-on: https://gerrit.libreoffice.org/78642
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I7bc11108790f8d87396bad3a2c5c2280f8f7d59a
Reviewed-on: https://gerrit.libreoffice.org/78369
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: I7d14fd76ec4e571d5971131b5ee16f4dfe648b23
Reviewed-on: https://gerrit.libreoffice.org/78316
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
...that involves adding a second, one-off special meaning to the existing
sal_detail_initialize function. This at least gets rid of the
"osl_getExecutableFile contains 'soffice' substring" guesswork (and of the
osl_systemPathGetFileNameOrLastDirectoryPart call there, which is what I'm
actually after, for a different change to come).
Change-Id: I4dd6eef1fd0411bf66943ffea415876c92d08526
Reviewed-on: https://gerrit.libreoffice.org/78291
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
(adapting call sites where necessary)
Change-Id: Ib9ad1122571b1c00ebbb4638f94eb5698b18a1a7
Reviewed-on: https://gerrit.libreoffice.org/78289
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: Iff5e26369889345d1f907e52d86eff6b89c63e20
Reviewed-on: https://gerrit.libreoffice.org/78260
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I300d14d580d450ec338129918955651b9d40d5d2
Reviewed-on: https://gerrit.libreoffice.org/78059
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Triggering those SAL_WARN sporadically caused deadlocks at least for
<https://ci.libreoffice.org/job/lo_ubsan/>.
Change-Id: I7b7037e411c29eea26e63f71a5679127b084f447
Reviewed-on: https://gerrit.libreoffice.org/77374
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
This is a partial revert of 17642437fe0d68cf868ab430f04b4fdc12f1767f "reduce
ifdef forest". The original code used unsetenv only for certain platforms, and
putenv for others, but code a few lines further down uses unsetenv
unconditionally, so assume that it is safe to use on all relevant platforms
these days.
unsetenv isn't listed as async-signal-safe at <http://pubs.opengroup.org/
onlinepubs/9699919799/functions/V2_chap02.html#tag_15_04_03> "Signal Actions"
(but is already used a few lines further down, also between fork and exec), but
at least we get rid of the memory management involved in the OUString instance.
Change-Id: Iac993db8819d40a0841c455ed04ff9ca2ee2e4eb
Reviewed-on: https://gerrit.libreoffice.org/77368
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: Icb9d9e1cd21e2506e36fe40a3b93b6a2521a868c
Reviewed-on: https://gerrit.libreoffice.org/77239
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
so drop the first write in favor of the second
Change-Id: Iac906d806a66e010e8352139b555aef6078bda02
Reviewed-on: https://gerrit.libreoffice.org/77235
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Ie183c445bf8a545f59aac7b0e29f72ab679a6cf3
Reviewed-on: https://gerrit.libreoffice.org/76852
Tested-by: Jenkins
Reviewed-by: Andrea Gelmini <andrea.gelmini@gelma.net>
|
|
Change-Id: Id9d994343d10b5d5e852b10946c036dfbeb66d04
Reviewed-on: https://gerrit.libreoffice.org/76656
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
"an URI", to complete:
https://gerrit.libreoffice.org/#/c/75985/
Change-Id: I57489b05117fd12ae6aa22544437ab5bc6b5154f
Reviewed-on: https://gerrit.libreoffice.org/76037
Tested-by: Jenkins
Reviewed-by: Andrea Gelmini <andrea.gelmini@gelma.net>
|
|
Change-Id: I0ff36c58bf2448bdccc239582ba24b69c7431c6d
Reviewed-on: https://gerrit.libreoffice.org/75921
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
Let us see what happens if we annotate our mutex code,
https://scan.coverity.com/models
Change-Id: I7baf44d1a252f19b4ae47f3a6b318f7ccd9629d7
Reviewed-on: https://gerrit.libreoffice.org/75851
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: Id1b8044126e65e67b2496cf7a4eb86b54ba6c1df
Reviewed-on: https://gerrit.libreoffice.org/75872
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
WPXSvInputStreamImpl was hammering on getFilePos pretty hard, and
getFilePos uses a mutex, which is slow when it is called from every
single read. So switch to using std::atomic to access position.
This is specifically fixing the performance of queryTypeByDescriptor
when called from a basic macro on a local test file.
This takes my test macro from 8s to 4s.
Change-Id: Iab707a374359e2ee0e92425b2d9a903d67cb53d4
Reviewed-on: https://gerrit.libreoffice.org/73377
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
getpwuid_r() returns nullptr. Oddly enough, it does work on actual
iOS, though. So use hand-crafted values that match behaviour on actual
iOS.
Change-Id: Idcc95d330a93495938520229e039f340876c3653
|
|
macosx_getLocale (via getProcessLocale, both sal/osl/unx/osxlocale.cxx) obtains
from the system a locale string like "en-DE". (Whether that is even a sane and
recommended way to obtain the system locale on macOS I don't know; but lets
leave it at that for now.)
However, setting a locale env var (LANG, LC_ALL) to such a value causes a
constructor call std::locale("") to throw a std::runtime_error
"collate_byname<char>::collate_byname failed to construct for ", at least on
macOS 10.14.4. And libdivvun (which might be bundled with a LO extension) is
known to be hit by that, see <https://github.com/divvun/libdivvun/issues/28>
"locale("") gives 'collate_byname<char>::collate_byname failed to construct
for ' on LO on mac".
The code setting LC_ALL/LC_CTYPE/LANG was there ever since
8737d1831b48acd8a4793c4728ad8563f77b5bf8 "INTEGRATION:
CWS geordi2q14: #111934#: merge CWS ooo111fix2", but for unclear reasons. Lets
assume that it had no purpose (any longer).
Change-Id: I0b519ad567a713d61f662aa984791db1a91c708c
Reviewed-on: https://gerrit.libreoffice.org/70918
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|