Commit Graph
107 Commits
Author SHA1 Message Date
Mike Kaganski 8985041da5 Throw from OText{Input,Output}Stream::setEncoding on unknown encoding
Before this, it was possible to pass an arbitrary string to the method,
and have no way of knowing about the problem. IllegalArgumentException
is derived from RuntimeException, which is explicitly documented to be
allowed at every interface method, signalling errors not covered by the
interface method specification, so this is not an API change.

Change-Id: I038f7765ec3f332f0e787351fa032feeef2cefb0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190048
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
2025-08-22 18:40:40 +02:00
Mike Kaganski ec4628b797 Avoid memory leak in OText{Input,Output}Stream::setEncoding
These classes used to only destroy their converter and context in
dtor; but their setEncoding API method can be called several times,
and every time after the initial initialization, it leaked active
converter and context.

Change-Id: Ie71cf73e4bc36a94b433898bc6bb3041dab700e7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190047
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
2025-08-22 18:40:35 +02:00
Alin Andrei Abahnencei 8391bd0ea4 tdf#163691 Use std::copy() instead of memmove()
Signed-off-by: Alin Andrei Abahnencei <alinandrei2004@gmail.com>
Change-Id: I429aa29f97d3f7cc904cac5664b988548fe7f46c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178954
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-12-20 22:42:19 +01:00
Mike Kaganski a9734683df Simplify OTextInputStream a bit
Change-Id: I94c4432228c470ad31d15a765de87565b4ada9df
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178039
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
2024-12-07 16:11:57 +01:00
Alin Andrei Abahnencei 734f80b669 tdf#162716 Always strip line-ending characters
Signed-off-by: Alin Andrei Abahnencei <alinandrei2004@gmail.com>
Change-Id: I3dfc6908e18f7bad54468620cf657a0a4afb8046
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177393
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
2024-12-07 14:26:16 +01:00
Noel Grandin 36703975a0 loplugin:ostr in io
Change-Id: I68bb665798edf464020c8c3a6f7d9c9f5e85869e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167379
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
2024-05-09 12:48:17 +02:00
Gabor Kelemen 6d3f6e77e1 tdf#146619 Drop unused 'using namespace' in: io/
Change-Id: I5cfd37be41e1d364f8d50b3a547453d418abb86d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165512
Tested-by: Jenkins
Reviewed-by: Gabor Kelemen <gabor.kelemen.extern@allotropia.de>
2024-03-29 21:21:02 +01:00
Baole Fang 16242898da tdf#150135: Fix OTextInputStream to throw runtime exception when uninitialized
New method checkNull is added to the class to throw a runtime error if mxStream is uninitialized. It is run in the beginning of all methods that require an initialized mxStream.

Change-Id: Ia1f15d90c79c71b2a2350d9b60ef1bf68fb9009c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148819
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-03-14 06:47:26 +00:00
Mike Kaganski ed9ff1a397 Drop these defines
Change-Id: I7ff56d6f016ea90c4b5cdcbbb36141627037c0ba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113125
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-03-26 15:05:44 +01: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
Noel Grandin d1038da54d io: create instances with uno constructors
See tdf#74608 for motivation.

Change-Id: Ic5942f00147e4024ffc3d5880cf3c7462bcc14de
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98678
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-07-14 10:27:34 +02: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
Arkadiy Illarionov 01837a8500 Simplify Sequence iterations in io
Use comphelper::findValue and initializer lists.

Change-Id: I4ebaf556a21b263e48b82a7290093eb8a832d9da
Reviewed-on: https://gerrit.libreoffice.org/78351
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-by: Arkadiy Illarionov <qarkai@gmail.com>
2019-09-01 02:04:50 +02:00
Andrea Gelmini ecd3a4874b Fix typos
Change-Id: Icdc486d64283961dad4a1d29ae662d66143f674b
Reviewed-on: https://gerrit.libreoffice.org/77320
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Julien Nabet <serval2412@yahoo.fr>
2019-08-12 16:07:12 +02:00
Stephan Bergmann fab5a47c0c Improved loplugin:stringconstant (now that GCC 7 supports it): io
Change-Id: Ia1bf6c89a0c70941f251dcbc68061df7bd3457b4
Reviewed-on: https://gerrit.libreoffice.org/76668
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-07-31 12:57:36 +02:00
Gabor Kelemen f9b8c2d57b tdf#42949 Fix IWYU warnings in io/
Found with bin/find-unneeded-includes
Only removal proposals are dealt with here.

Change-Id: I16dfde335816053e5821d5e975b27b6e4819b1a8
Reviewed-on: https://gerrit.libreoffice.org/71135
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2019-04-25 11:28:15 +02:00
Noel Grandin 48f2d4e580 loplugin:unusedfields in helpcompiler..jvmfwk
Change-Id: Ic10c521de310e0f0ac1f79a1ae169252c20075b2
Reviewed-on: https://gerrit.libreoffice.org/68226
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-02-24 09:48:16 +01:00
Noel Grandin 3af500580b loplugin:salcall fix functions
since cdecl is the default calling convention on Windows for
such functions, the annotation is redundant.

Change-Id: I1a85fa27e5ac65ce0e04a19bde74c90800ffaa2d
Reviewed-on: https://gerrit.libreoffice.org/46164
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-12-11 12:13:46 +01:00
Stephan Bergmann 3f2a9e2d71 loplugin:includeform: io
Change-Id: I68e0ebc5a1585d2f55a4061edd8ab197f437b6a2
2017-10-23 22:46:04 +02:00
Chris Sherlock 9af8964dd2 RTL_UNICODETOTEXT_INFO_{DEST|SCR}BUFFERTOSMALL should use TOO, not TO
I have kept the old mispelled constant for backwards compatibility

Change-Id: I128a2eec76d00cc5ef058cd6a0c35a7474d2411e
Reviewed-on: https://gerrit.libreoffice.org/39995
Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com>
Tested-by: Chris Sherlock <chris.sherlock79@gmail.com>
2017-07-17 21:47:38 +02:00
Noel Grandin 513ac8eb79 loplugin:useuniqueptr in various
extending it to find places we can use std::unique_ptr on arrays

Change-Id: I9feb1d12d738d6931e752ecb6dd51cbc1540c81b
Reviewed-on: https://gerrit.libreoffice.org/39255
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-06-27 08:42:36 +02:00
Noel Grandin a006f60b6a loplugin:oncevar in helpcompiler..jvmfwk
Change-Id: Ia9b20a8ca95684cbeb21e3425972c43ba50df3cd
Reviewed-on: https://gerrit.libreoffice.org/39187
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-06-25 17:19:36 +02:00
Jochen Nitschke 959496794c cleanup osl/diagnose.h includes
with command
> git grep -l osl/diagnose.h *.cxx |
  xargs grep -L -w 'OSL_\w*' |
  xargs sed -i '/#include *\(<\|\"\)osl\/diagnose.h\(>\|\"\).*/d'

headers need more work

Change-Id: I906519ebbd47a04703b4fa5943b2f7abea7a97ab
Reviewed-on: https://gerrit.libreoffice.org/37350
Tested-by: Jochen Nitschke <j.nitschke+logerrit@ok.de>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
2017-05-09 15:41:46 +02:00
Stephan Bergmann 6dce9c6757 Add missing #includes
...and remove some unncessary using directives/declarations, in preparation of
removing now-unnecessary #includes from cppumaker-generated files, post
e57ca02849 "Remove dynamic exception
specifications".

Change-Id: Iaf1f268871e2ee1d1c76cf90f03557527ebc9067
2017-02-06 17:21:16 +01:00
Stephan Bergmann e57ca02849 Remove dynamic exception specifications
...(for now, from LIBO_INTERNAL_CODE only).  See the mail thread starting at
<https://lists.freedesktop.org/archives/libreoffice/2017-January/076665.html>
"Dynamic Exception Specifications" for details.

Most changes have been done automatically by the rewriting loplugin:dynexcspec
(after enabling the rewriting mode, to be committed shortly).  The way it only
removes exception specs from declarations if it also sees a definition, it
identified some dead declarations-w/o-definitions (that have been removed
manually) and some cases where a definition appeared in multiple include files
(which have also been cleaned up manually).  There's also been cases of macro
paramters (that were used to abstract over exception specs) that have become
unused now (and been removed).

Furthermore, some code needed to be cleaned up manually
(avmedia/source/quicktime/ and connectivity/source/drivers/kab/), as I had no
configurations available that would actually build that code.  Missing @throws
documentation has not been applied in such manual clean-up.

Change-Id: I3408691256c9b0c12bc5332de976743626e13960
Reviewed-on: https://gerrit.libreoffice.org/33574
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-01-26 12:54:43 +00:00
Stephan Bergmann f725fadea6 New loplugin:dynexcspec: Add @throws documentation, io
Change-Id: I2d8b69454217bbbc9542cced8ce85269e3872662
2017-01-19 18:03:18 +01:00
Stephan Bergmann 91dd2db17b loplugin:override: No more need for the "MSVC dtor override" workaround
The issue of 362d4f0cd4 "Explicitly mark
overriding destructors as 'virtual'" appears to no longer be a problem with
MSVC 2013.

(The little change in the rewriting code of compilerplugins/clang/override.cxx
was necessary to prevent an endless loop when adding "override" to

  OOO_DLLPUBLIC_CHARTTOOLS    virtual ~CloseableLifeTimeManager();

in chart2/source/inc/LifeTime.hxx, getting stuck in the leading
OOO_DLLPUBLIC_CHARTTOOLS macro.  Can't remember what that
isAtEndOfImmediateMacroExpansion thing was originally necessary for, anyway.)

Change-Id: I534c634504d7216b9bb632c2775c04eaf27e927e
2016-09-13 13:19:22 +02:00
Noel Grandin 5abc669599 new plugin stylepolice
check for local variables which follow our member field naming
convention, which is highly confusing

Change-Id: Idacedf7145d09843e96a584237b385f7662eea10
2016-04-21 08:32:47 +02:00
Chris Sherlock a238b1f8d3 Remove excess newlines
A ridiculously fast way of doing this is:

for i in $(pcregrep -l -M -r --include='.*[hc]xx$' \
  --exclude-dir=workdir --exclude-dir=instdir '^
{3,}' .)
do
    perl -0777 -i -pe 's/^
{3,}/

/gm' $i
done

Change-Id: Iebb93eccbee9e4fc5c4380474ba595858a27ac2c
Reviewed-on: https://gerrit.libreoffice.org/22224
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com>
2016-02-09 08:18:05 +00:00
Noel Grandin 8e234c5b7d use initialiser syntax for Sequence<OUString>
replaced using the script:

git grep -lP 'Sequence.*OUString.*\(1\)'
  | xargs perl -0777 -pi
    -e "s/Sequence< OUString > (\w+)\(1\);
.*\[0\] = (\S+);/Sequence< OUString > \1 { \2 };/g"

Change-Id: I23688a91562051a8eed11fc2a85599545c285c34
Reviewed-on: https://gerrit.libreoffice.org/19967
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2015-11-15 10:13:08 +00:00
Stephan Bergmann 22980bea48 loplugin:nullptr (automatic rewrite)
Change-Id: I04ceb5b1514a1d0bf123a1cded5e1aac3e8dde2f
2015-11-10 10:31:29 +01:00
Stephan Bergmann 84eeebd750 Fix create/destroy mismatch
Change-Id: Ibff6caedae0c5ed84cf4864c7a52af56a7cea527
2015-11-03 08:48:10 +01:00
Stephan Bergmann b36963c0a6 Replace "SAL_OVERRIDE" with "override" in LIBO_INTERNAL_ONLY code
Change-Id: I2ea407acd763ef2d7dae2d3b8f32525523ac8274
2015-10-12 17:52:29 +02:00
Stephan Bergmann 1d00baff39 clang-analyzer-deadcode.DeadStores
Change-Id: I22b423b99c87070ab1b8ce7f3eff928384951947
2015-10-07 12:49:43 +02:00
Takeshi Abe e00d41f76d io: tdf#88206 replace cppu::WeakImplHelper* etc.
with the variadic variants.

Change-Id: Iad03db6b729a785ab8b29a69943fa45f5a36b21b
Reviewed-on: https://gerrit.libreoffice.org/17849
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Tested-by: Noel Grandin <noelgrandin@gmail.com>
2015-08-19 07:48:50 +00:00
Noel Grandin 5256953397 inline some use-once typedefs
Change-Id: I55cc82c8e180cce371c996690608090b1bfdfda4
Reviewed-on: https://gerrit.libreoffice.org/17494
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2015-08-03 12:16:13 +00:00
Stephan Bergmann 950f7c31ea loplugin:cstylecast: deal with remaining pointer casts
Change-Id: Ia282c33c70977e3c9e8f1c6fd86bee2fa6eca5c3
2015-06-08 16:25:54 +02:00
Noel Grandin 71b809959b remove unnecessary use of void in function declarations
ie.
    void f(void);
becomes
    void f();

I used the following command to make the changes:

  git grep -lP '\(\s*void\s*\)' -- *.cxx \
    | xargs perl -pi -w -e 's/(\w+)\s*\(\s*void\s*\)/$1\(\)/g;'

and ran it for both .cxx and .hxx files.

Change-Id: I314a1b56e9c14d10726e32841736b0ad5eef8ddd
2015-04-15 11:47:12 +02:00
Stephan Bergmann 14c12fac0e Some more loplugin:cstylecast: io
Change-Id: Iefd3268299b43ba08b9bc7699aa104288119ff4a
2015-01-20 09:06:48 +01:00
Stephan Bergmann 7a0bfcbce1 fdo#79941: Properly handle short reads
Change-Id: Ie762ff272410d809382f98a1d446946b566df747
2014-11-21 18:32:16 +01:00
Noel Grandin 0371a63365 remove unnecessary 'using namespace rtl' declarations
It turns out that almost none of them were necessary.

Change-Id: I1311ed28409c682b57ea8d149bcbaf2c49133e83
Reviewed-on: https://gerrit.libreoffice.org/12133
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Tested-by: Noel Grandin <noelgrandin@gmail.com>
2014-10-29 11:28:54 +00:00
Noel Grandin 1f2a47a6d3 io: sal_Bool->bool
Change-Id: I136c98cbe15d1c6629028392a9573066320b3a04
2014-04-23 11:11:49 +02:00
Stephan Bergmann 70cc2b191b First batch of adding SAL_OVERRRIDE to overriding function declarations
...mostly done with a rewriting Clang plugin, with just some manual tweaking
necessary to fix poor macro usage.

Change-Id: I71fa20213e86be10de332ece0aa273239df7b61a
2014-03-26 16:39:26 +01:00
Caolán McNamara 51f85041ef coverity#707936 Uninitialized pointer field
Change-Id: I0ae177349408fd49832056fbc4c300e8e77b2417
2014-03-12 11:02:18 +00:00
Stephan Bergmann 5e21a413c7 cppuhelper: retrofit std::exception into overriding exception specs
Change-Id: I56e32131b7991ee9948ce46765632eb823d463b3
2014-02-26 18:22:20 +01:00
Alexander Wilms 043e378521 Remove visual noise from io
Change-Id: I46f8c4f793596b0e6feb2db7b9302b9b6eb9644b
Reviewed-on: https://gerrit.libreoffice.org/8273
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2014-02-26 09:25:43 -06:00
Marcos Paulo de Souza 3a009c427f fdo#60698: Merge all libs of io...
creating the libio. All these libraries are always used together, so we can put them
together in one single library.

This save almost 500 kb of the size of the final library.

Change-Id: Ib32fec36cc4eb80ca646ce472c1f1bcdd98ac62b
Reviewed-on: https://gerrit.libreoffice.org/6567
Tested-by: LibreOffice gerrit bot <gerrit@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
2013-11-05 01:02:13 -06:00
Marcos Paulo de Souza ee5661ecd3 fdo#54938: Adapt supportsService implementations..
to cppu::supportsService

Change-Id: I0b03d3910f094f2183bf9859db9d5bcaf35d1f14
Reviewed-on: https://gerrit.libreoffice.org/6370
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
2013-10-22 10:28:10 +00:00
Takeshi Abe 12b1d1cda3 Mark as const
Change-Id: I9277052ee9c6197cef7a46bd8f3ab9c5515c2502
2013-08-12 09:23:52 +09:00
Mark Wielaard 2fc0fa62b2 Fix memory leak in OTextInputStream.
Delete mpBuffer when done in destructor or replaced in implResizeBuffer.

Change-Id: Ide1b44f10a482ce9bb6135fb879e62e0a8ccea29
Reviewed-on: https://gerrit.libreoffice.org/4637
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
2013-07-01 12:26:09 +00:00