1. Drop obsolete #ifndef DONT_HAVE_GDIPLUS, introduced in commit
06c8108fe5 (Attempt to make this
build with MinGW, 2011-06-24).
2. Improve API methods implementations.
2.1. In IUnknown::Release, make sure to check the value returned
from decrement, not the member (that could potentially be modified
in the meantime again).
2.2. In ISequentialStream::Read, don't return S_OK for too large
read; and make sure to set pcbRead even on zero-byte read.
2.3. In IStream::Seek, check dwOrigin value; handle STREAM_SEEK_END
correctly, without subtracting an extra 1; don't fail on too large
positive offset (that is explicitly documented as OK); and don't
ignore the plibNewPosition argument (callers expect the new offset
there).
2.4. In IStream::Stat, check grfStatFlag value; handle OOM; don't
limit the returned offset to 32 bits.
3. Make StreamOnZipBuffer own the buffer. It user a reference to
temporaries; but the object is refcounted, and when passed to an
API, it could potentially outlive the temporaries it depended on.
4. Move CThumbviewer definition to CXX, and simplify the HXX.
Change-Id: I5b31a8bf66651862d730cc346948dc04f984fddb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184807
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
...by moving the char8_t -> char reinterpret_cast out of any potential constexpr
paths into a new TranslateId::getId. And demonstrate constexpr'ability by
making the aCategories var in OApplicationIconControl::Fill
(dbaccess/source/ui/app/AppIconControl.cxx) constexpr. (And there might be more
such cases that could now be made constexpr.)
Change-Id: I0b4e3292faf8f6b901f9b9e934e1aa6bf0f583ff
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157862
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Inspired by
<https://gcc.gnu.org/pipermail/gcc-patches/2022-November/607102.html> "[PATCH]
doc: -Wdelete-non-virtual-dtor supersedes -Wnon-virtual-dtor", drop explicitly
enabling -Wnon-virtual-dtor in favor of -Wdelete-non-virtual-dtor, which is
already enabled by -Wall.
(-Wdelete-non-virtual-dtor first appeared in Clang 3.0,
<https://github.com/llvm/llvm-project/commit/8bd428574c717e68a8274739d2ba0f6dc16fd0fb>
"Add new warning that warns when invoking 'delete' on a polymorphic, non-final,
class without a virtual destructor", and GCC 4.7,
<https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=014ab419efc12a59efebd2720d79e1c055675c85>
"invoke.texi: Document -Wdelete-non-virtual-dtor. [...]")
Dropping the explicit setting of -Wnon-virtual-dtor (and nowhere setting it
implicitly via -Weffc++) means we can get rid of lots of places that either set
-Wno-non-virtual-dtor or use some pragma to ignore -Wnon-virtual-dtor.
(In various places across extensions/source/activex/ and winaccessibility/, the
commits f26996bd33 "Silence
-Werror,-Wnon-virtual-dtor in generated so_activex.h (clang-cl)" and
c6086ca653 "Silence -Werror,-Wnon-virtual-dtor in
generated UAccCOM.h (clang-cl)" had singled out some includes to wrap them in
pragmas. Now that those pragmas are gone again, move those includes back to
where they had been prior to being singled out. And the -Wno-non-virtual-dtor
in external/firebird/macos-arm64.patch.0 appeared first in
ccd0e5f445 "Make firebird build for macOS on
arm64", which, though it doesn't state it explicitly, apparently created that
patch's builds/posix/prefix.darwin_arm64 as a copy of firebird's already
existing builds/posix/prefix.* files, which routinely include that warning
option too, so keep it there too even if it is probably irrelevant throughout.)
Change-Id: I7e4fa9f2c07e267b2ed15607905027f6b78142f3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143182
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
This allows to avoid use of module name when obtaining current module
handle, which needs to be synchronized and thus is error-prone.
Change-Id: I2f0e0af7f616c3582b0a3271cf9e06420a9dfc8e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127993
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Except for MAC/WIN specific parts (i.e. most of it)
Found with bin/find-unneeded-includes
Only removal proposals are dealt with here.
Change-Id: Ia14fb27c047e0e69f81386212aa25344f1297e05
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95663
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
This is required fro two reasons:
1. For our custom LOSPSupport.OpenDocuments, it allows SharePoint site's
js code to properly find out the supported methods of the object.
Previously we only registered v.1 for it, and that made SharePoint to
assume that only older subset of methods is supported.
2. For SharePoint.OpenDocuments, which is used to register MS component
to point to our implementation, leaving out v.4 and v.5 made problems on
systems with co-existing MS Office; leftover registration of v.4 and v.5
resulted in mixed results: when opened from web view, documents used MS
ActiveX, while for documents opened from list view in SharePoint, our
ActiveX was used. Registering all versions produces consistent results.
Change-Id: I7e8d4216cce1708e676c834a465654751f079c89
Reviewed-on: https://gerrit.libreoffice.org/74776
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
ViewDocument3 method takes OpenType parameter, which allows to decide
if user can choose opening the document read-only or to edit.
Since we need to show localizable strings, we need to bootstrap part
of LO (l10n), which is impossible when e.g. 64-bit ActiveX DLL tries
to load installed 32-bit sal DLLs. Thus, we need a separate helper
.exe, which architecture matches the rest of installed LO, and which
handles user interaction.
Change-Id: I0ad53ba64272fb84728d2221e3dc85d3eefdda68
Reviewed-on: https://gerrit.libreoffice.org/72355
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
Since we dropped support of Vista and below in master toward 6.0,
those checks are needless. Removing the code that only worked in
older versions, and streamlining the resulting code.
Also, use kernel32.dll version for Windows version, instead of
deprecated GetVersionEx, and inconvenient VersionHelpers. Since both
GetVersion(Ex) and VersionHelpers (based on VerifyVersionInfo) are
subject to manifest-based behavior since Windows 8.1, this move will
hopefully result in more reliable OS version detection.
Change-Id: I3edd8fc1843e64b6a65bd3a126be6a085511f13c
Reviewed-on: https://gerrit.libreoffice.org/42905
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
To allow in-place replacement of OWSSUPP.dll, we need to be able
to handle the same ProgIDs that it handles, namely:
SharePoint.OpenDocuments and its versions. This allows to use
the SharePoint integration capabilities of LO without the need to
reconfigure SharePoint server's DOCICON.xml (the system would
start the component with same name as MS Office uses).
But this cannot be the default mode, since if MS Office is installed
on the same system, we would hijack the registration, that could be
undesirable.
So, this commit adds an option to use
regsvr32 [/u] /i:Substitute_OWSSUPP path\to\spsupp.dll
to also [un]register SharePoint.OpenDocuments in addition to normal
LOSPSupport.OpenDocuments.
Change-Id: Icc284f9aa8f97ecf04594dd55b99bc1e3d20740d
Reviewed-on: https://gerrit.libreoffice.org/36389
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
In OOo times, there'd originally been efforts to allow building on Windows with
MinGW. Later, in LO times, this has been shifted to an attempt of cross-
compiling for Windows on Linux. That attempt can be considered abandoned, and
the relevant code rotting.
Due to this heritage, there are now three kinds of MinGW-specific code in LO:
* Code from the original OOo native Windows effort that is no longer relevant
for the LO cross-compilation effort, but has never been removed properly.
* Code from the original OOo native Windows effort that is re-purposed for the
LO cross-compilation effort.
* Code that has been added specifially for the LO cross-compilation effort.
All three kinds of code are removed.
(An unrelated, remaining use of MinGW is for --enable-build-unowinreg, utilizing
--with-mingw-cross-compiler, MINGWCXX, and MINGWSTRIP.)
Change-Id: I49daad8669b4cbe49fa923050c4a4a6ff7dda568
Reviewed-on: https://gerrit.libreoffice.org/34127
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>