SvFileStream wants an absolute file URL, so improve the default
minimally and also assert that opening the file worked, so the dump is
not just silently discarded.
Change-Id: Iaea45603db65aff475051ea83ba1b45992d53590
Reviewed-on: https://gerrit.libreoffice.org/80195
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
... and lcl_RemoveFieldMarks() uses it; this avoids the problem that
lcl_CalcBreaks() would of course remove the dummy character from the
deletion range.
Change-Id: Iba0f7901b9efe4af273e17c58c6b40d4fd783efd
Reviewed-on: https://gerrit.libreoffice.org/80069
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
...so don't add deferred properties during style import.
Otherwise, the first paragraph picks up those attributes and
applies them.
Regression from 2012 - only affects subscript/superscript.
Truly fixing this for Character Styles will be tricky,
because it depends on the final fontsize - regardless of
where it is set. So at the style level, the deferred
property needs to be percentized based on SOMETHING, and then
at appendText time the fontsize needs to be determined.
If escapement is inherited from a style, then the escapement needs
to be converted BACK into pointsize (based on style charsize),
and then the final percentage can be calculated and
directly applied. Yuck. I'm inclined to treat charstyle
escapement like pre-2012, which just assigned default
values and ignored the actual/given amount.
Change-Id: I8e3783533ec18740e1c7d0b36c58b6c7e8ce107f
Reviewed-on: https://gerrit.libreoffice.org/80178
Tested-by: Jenkins
Reviewed-by: Justin Luth <justin_luth@sil.org>
This reverts commit d35840a211, now that
43aef04d77 "Reliably wait for soffice to
terminate" makes sure that no soffice-related processes are left behind by
UITests. Using PR_SET_PDEATHSIG had the following drawbacks:
* It defeats debugging if a runaway process is forcefully killed by the test
framework. (And there are already higher-layer mechanisms in place for the
reliable termination of runaway tinderbox builds, see the commit message of
43aef04d77 mentioned above.)
* It is brittle in that it can terminate soffice-related processes too early, as
the signal is sent as soon as the parent's thread that spawned the child (and
not the parent process as a whole) terminates.
* It is Linux-only.
Change-Id: Ia07f5dbaafc824bad0dfbdb1a2aabe6d5508741b
Reviewed-on: https://gerrit.libreoffice.org/80186
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
... and use it where the mark for a given CH_TXT_ATR_FIELD* is
retrieved.
Change-Id: Id58ac2967ab66be8a07586ef31cfe9e18a5f073d
Reviewed-on: https://gerrit.libreoffice.org/80050
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
Turns out that this is still a condition that can happen regularly:
* open Impress
* click an object with a spelling mistake
* press F7 to activate the spelling dialog (don't choose it from the
menu)
=> assert()
It is unclear how to sort this out correctly without refactoring, and
also unclear how many other cases fail this condition, so let's change
to SAL_WARN_IF for the moment.
Change-Id: I97730cc93c86c279973702bbf4ddc922f1616c0b
Reviewed-on: https://gerrit.libreoffice.org/80170
Tested-by: Jenkins
Reviewed-by: Tor Lillqvist <tml@collabora.com>
...to avoid leftover soffice-related processes (oosplash, soffice.bin) from
UITests, whose occasional presence on tinderboxes is discussed in the comments
to <https://gerrit.libreoffice.org/#/c/79854/> "uitest: make child soffice
process die when parent dies". Should sucha an soffice-related process fail to
terminate, the UITest will now fail to terminate too, and (a) a developer can
debug the hung processes or (b) a tinderbox can reliably kill all processes (cf.
<https://gerrit.libreoffice.org/plugins/gitiles/lode/+/
bea0738dbadfe8784e5d3c00f533acf101db4e7e%5E%21> "tb_slave_wrapper: trap signal
and kill -9 everything"). This is in line with the waiting in tearDown in
unotest/source/python/org/libreoffice/unotest.py, and with the corresponding
behavior of C++ and Java test frameworks in unotest.
Change-Id: Ieb5c48964428bc05fa8c0f83af9426641d6df693
Reviewed-on: https://gerrit.libreoffice.org/80175
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
When IWYU is used to check cxx files it also checks associated
hxx (but for .hxx -> .h too) files too and gives addition/removal recommendations
There is no documented way of disabling this.
Currently f-u-i does not differentiate between recommendations for the
checked file and its header and prints everything.
Which means sometimes I need to update .hxx files or blacklist warnings
that interestingly are not shown when the same .hxx is checked with IWYU.
The worst example is ucb/source/ucp/ftp/curl.hxx where IWYU gives recommendations
for /usr/include/x86_64-linux-gnu/curl/curl.h
Remedy this with considering the full
filename + should add these lines: / should remove these lines:
string as beginning of interesting recommendations
Also remove some now obsolete blacklist entries from yaml files
Change-Id: I1d139536992e4b56c699c31a4cc6491d373c2002
Reviewed-on: https://gerrit.libreoffice.org/80172
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
I suppose a number of these should even better use a shared PCH that
also includes Writer headers.
Change-Id: I3227bff71ddc2cd2e59ef18c1481606de16f9ea5
Reviewed-on: https://gerrit.libreoffice.org/79816
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
And make it simple to disable the whole feature by setting
gb_DISABLE_PCH_REUSE=1, just in case.
Also work around a possible BOOST_ALL_NO_LIB mismatch when
using the common PCH.
Change-Id: I96fd507edf1ada6242ac225026250e5a588d0193
Reviewed-on: https://gerrit.libreoffice.org/79365
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Where reasonable means they are from a list of defines known not
to affect the system headers, and so they are safe to differ from
how the PCH was built. A bit hackish, but works in practice.
Change-Id: Ia00d2e4c56212aca05ba9d47abbb0d253998219f
Reviewed-on: https://gerrit.libreoffice.org/79364
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
The idea is that this PCH will be used as a fallback for linktargets
that do not explicitly set their own PCH.
Change-Id: If05d3f04893a386e5d991f913e094f49249c8f44
Reviewed-on: https://gerrit.libreoffice.org/79363
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Similar to gb_LinkTarget_set_precompiled_header, but uses PCH
created by another linktarget. This allows using a PCH even for linktargets
that are small and creating their own dedicated PCHs is not worth it.
The ultimate goal is having some default PCH that will be used if no
explicit PCH is set.
Change-Id: I4d72acdba7181bb5c7c1cdead776f548be36ba33
Reviewed-on: https://gerrit.libreoffice.org/79362
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
GCC/Clang do not bother with warning about overriding e.g. -O2
with -O0, AFAICT it's quite a common practice, and I really don't
see any good reason for the warning, and even less so for not even
being able to disable it. Without this, enabling SSE2/AVX2
would warn about overriding the default -arch:SSE (that's hardcoded
by configure to be part of the compiler command).
Change-Id: I9f9109b77de90085486bc2a98f1b453a41755e60
Reviewed-on: https://gerrit.libreoffice.org/80123
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
All the various gb_CppunitTest_add_cxxobjects variants actually
allow passing additional CXXFLAGS. However, currently that would
abort the build if PCH is used, because PCH requires the same
CXXFLAGS. But if those extra CXXFLAGS are set explicitly, just
skip using the PCH for that one file, as the mismatch is intentional.
Change-Id: Iec4eed6d5f94c3e97ee461241203a84d21e8113c
Reviewed-on: https://gerrit.libreoffice.org/80120
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
E.g. gb_LinkTarget_add_exception_object adds it explicitly, but
gb_LinkTarget_add_cxxobject itself does not, even though other variants
(c,objc,objcxx) do it.
This means that when compiling tools/qa/cppunit/test_cpuid.cxx it
doesn't get the correct -O/-g flags, because CppunitTest_tools_test.mk
uses gb_CppunitTest_add_cxxobjects to add $(INTRINSICS_CXXFLAGS).
And that in its own actually should use the add_exception_objects variant,
it didn't presumably because that one used to have cxxflags passing broken
until I fixed it in 4bbdab901e. The usage
in Library_cpp_uno.mk even explicitly works around the lack of debug symbols.
Change-Id: Idc794e95bb817cd2ba2942b8e1f04f80d6722f97
Reviewed-on: https://gerrit.libreoffice.org/80119
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Import and export of VML element TextVAlign weren't
supported by Calc, losing vertical aligment of the
comments assigned to the spreadsheet cells.
Change-Id: Ice70d3c65021902991ae869b6c60e30e4cdef8c3
Reviewed-on: https://gerrit.libreoffice.org/78816
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
Simplifies memory management; makes code clearer; in case of
SwStyleNameMapper::getHashTable, avoids unnecessary filling
of vIndexes at each call.
Change-Id: I789bc0695d39dddcccac6cbc43fb48ab94f1321b
Reviewed-on: https://gerrit.libreoffice.org/80174
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
...which had gone missing with 98cbfb087e "uitest:
kill the LibreOffice instance if it ignores terminate request".
(None != 0 is true, so there is no need to map from ret_attr to ret, and that
code can be cleaned up a bit.)
Change-Id: Ic5e429d61a10a2bbd5c28aeee9d8465cb05c1e4a
Reviewed-on: https://gerrit.libreoffice.org/80147
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tab==-1 may have been the condition 10 years ago, but at least since
commit 296baa2fb6
CommitDate: Tue Oct 5 18:14:37 2010 -0400
Ported calc-extref-interpreter-rework-*.diff from ooo-build.
that's not the case anymore.
The check is only used in
ScRefTokenHelper::compileRangeRepresentation() that is only used
when creating chart data sources and sequences, thus may have gone
undetected.
Change-Id: I2eeb20ec740d286918b6ea29c017c32d03f970ad
Reviewed-on: https://gerrit.libreoffice.org/80163
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
With <https://gerrit.libreoffice.org/#/c/80147/> "Propagate soffice process
failure from OfficeConnection's tearDown" included, UITest_calc_tests2 would
start to fail with
> ==1492559==ERROR: AddressSanitizer: heap-use-after-free on address 0x6110009d26a8 at pc 0x7f38d09d1eda bp 0x7f3814e617f0 sp 0x7f3814e617e8
> READ of size 8 at 0x6110009d26a8 thread T44 (cppu_threadpool)
> #0 in com::sun:⭐:uno::BaseReference::is() const at include/com/sun/star/uno/Reference.h:94:27
> #1 in TransferableHelper::ImplFlush() at vcl/source/treelist/transfer.cxx:518:22
> #2 in TransferableHelper::TerminateListener::notifyTermination(com::sun:⭐:lang::EventObject const&) at vcl/source/treelist/transfer.cxx:254:14
> #3 in framework::Desktop::impl_sendTerminateToClipboard() at framework/source/services/desktop.cxx:1655:24
> #4 in framework::Desktop::terminate() at framework/source/services/desktop.cxx:332:13
> #5 in gcc3::callVirtualMethod(void*, unsigned int, void*, _typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int, unsigned long*, double*) at bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx:77:5
> #6 in cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy*, bridges::cpp_uno::shared::VtableSlot, _typelib_TypeDescriptionReference*, int, _typelib_MethodParameter*, void*, void**, _uno_Any**) at bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:233:13
> #7 in unoInterfaceProxyDispatch at bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:413:13
> #8 in binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny*, std::__debug::vector<binaryurp::BinaryAny, std::allocator<binaryurp::BinaryAny> >*) const at binaryurp/source/incomingrequest.cxx:236:13
> #9 in binaryurp::IncomingRequest::execute() const at binaryurp/source/incomingrequest.cxx:79:26
> #10 in request at binaryurp/source/reader.cxx:85:9
> #11 in cppu_threadpool::JobQueue::enter(long, bool) at cppu/source/threadpool/jobqueue.cxx:107:17
> #12 in cppu_threadpool::ORequestThread::run() at cppu/source/threadpool/thread.cxx:165:31
> 0x6110009d26a8 is located 104 bytes inside of 216-byte region [0x6110009d2640,0x6110009d2718)
> freed by thread T0 here:
> #0 in free at /home/sbergman/github.com/llvm/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:123:3
> #1 in rtl_freeMemory at sal/rtl/alloc_global.cxx:51:5
> #2 in cppu::OWeakObject::operator delete(void*) at include/cppuhelper/weak.hxx:87:11
> #3 in ScSelectionTransferObj::~ScSelectionTransferObj() at sc/source/ui/app/seltrans.cxx:149:1
> #4 in cppu::OWeakObject::release() at cppuhelper/source/weak.cxx:233:9
> #5 in cppu::WeakImplHelper<com::sun:⭐:datatransfer::XTransferable2, com::sun:⭐:datatransfer:📋:XClipboardOwner, com::sun:⭐:datatransfer::dnd::XDragSourceListener, com::sun:⭐:lang::XUnoTunnel>::release() at include/cppuhelper/implbase.hxx:115:62
> #6 in com::sun:⭐:uno::Reference<com::sun:⭐:datatransfer::XTransferable>::~Reference() at include/com/sun/star/uno/Reference.hxx:110:22
> #7 in vcl::GenericClipboard::~GenericClipboard() at vcl/source/components/dtranscomp.cxx:49:7
> #8 in cppu::OWeakObject::release() at cppuhelper/source/weak.cxx:233:9
> #9 in cppu::WeakComponentImplHelperBase::release() at cppuhelper/source/implbase.cxx:84:22
> #10 in cppu::PartialWeakComponentImplHelper<com::sun:⭐:datatransfer:📋:XSystemClipboard, com::sun:⭐:lang::XServiceInfo>::release() at include/cppuhelper/compbase.hxx:86:36
> #11 in com::sun:⭐:uno::Reference<com::sun:⭐:datatransfer:📋:XClipboard>::~Reference() at include/com/sun/star/uno/Reference.hxx:110:22
> #12 in ImplFrameData::~ImplFrameData() at vcl/inc/window.h:126:8
> #13 in vcl::Window::dispose() at vcl/source/window/window.cxx:550:9
> #14 in ImplBorderWindow::dispose() at vcl/source/window/brdwin.cxx:1664:18
> #15 in VclReferenceBase::disposeOnce() at vcl/source/outdev/vclreferencebase.cxx:38:5
> #16 in VclPtr<vcl::Window>::disposeAndClear() at include/vcl/vclptr.hxx:206:19
> #17 in vcl::Window::dispose() at vcl/source/window/window.cxx:517:34
> #18 in SystemWindow::dispose() at vcl/source/window/syswin.cxx:108:13
> #19 in WorkWindow::dispose() at vcl/source/window/wrkwin.cxx:128:19
> #20 in VclReferenceBase::disposeOnce() at vcl/source/outdev/vclreferencebase.cxx:38:5
> #21 in VclPtr<OutputDevice>::disposeAndClear() at include/vcl/vclptr.hxx:206:19
> #22 in VCLXWindow::dispose() at toolkit/source/awt/vclxwindow.cxx:939:21
> #23 in (anonymous namespace)::XFrameImpl::disposing() at framework/source/services/frame.cxx:2183:18
> #24 in cppu::WeakComponentImplHelperBase::dispose() at cppuhelper/source/implbase.cxx:102:17
> #25 in cppu::PartialWeakComponentImplHelper<com::sun:⭐:lang::XServiceInfo, com::sun:⭐:frame::XFrame2, com::sun:⭐:awt::XWindowListener, com::sun:⭐:awt::XTopWindowListener, com::sun:⭐:awt::XFocusListener, com::sun:⭐:document::XActionLockable, com::sun:⭐:util::XCloseable, com::sun:⭐:frame::XComponentLoader, com::sun:⭐:frame::XTitle, com::sun:⭐:frame::XTitleChangeBroadcaster, com::sun:⭐🫘:XPropertySet, com::sun:⭐🫘:XPropertySetInfo>::dispose() at include/cppuhelper/compbase.hxx:90:36
> #26 in (anonymous namespace)::XFrameImpl::close(unsigned char) at framework/source/services/frame.cxx:1728:5
> #27 in framework::pattern::frame::closeIt(com::sun:⭐:uno::Reference<com::sun:⭐:uno::XInterface> const&) at framework/source/inc/pattern/frame.hxx:62:21
> #28 in framework::CloseDispatcher::implts_closeFrame() at framework/source/dispatch/closedispatcher.cxx:492:10
> #29 in framework::CloseDispatcher::impl_asyncCallback(LinkParamNone*) at framework/source/dispatch/closedispatcher.cxx:371:20
> #30 in framework::CloseDispatcher::LinkStubimpl_asyncCallback(void*, LinkParamNone*) at framework/source/dispatch/closedispatcher.cxx:246:1
> #31 in Link<LinkParamNone*, void>::Call(LinkParamNone*) const at include/tools/link.hxx:112:45
> #32 in vcl::EventPoster::DoEvent_Impl(void*) at vcl/source/helper/evntpost.cxx:52:13
> #33 in vcl::EventPoster::LinkStubDoEvent_Impl(void*, void*) at vcl/source/helper/evntpost.cxx:48:1
> #34 in Link<void*, void>::Call(void*) const at include/tools/link.hxx:112:45
> #35 in ImplHandleUserEvent(ImplSVEvent*) at vcl/source/window/winproc.cxx:1960:30
> #36 in ImplWindowFrameProc(vcl::Window*, SalEvent, void const*) at vcl/source/window/winproc.cxx:2513:13
> #37 in SalFrame::CallCallback(SalEvent, void const*) const at vcl/inc/salframe.hxx:299:29
> #38 in SvpSalInstance::ProcessEvent(SalUserEventList::SalUserEvent) at vcl/headless/svpinst.cxx:283:22
> #39 in non-virtual thunk to SvpSalInstance::ProcessEvent(SalUserEventList::SalUserEvent) at vcl/headless/svpinst.cxx
> #40 in SalUserEventList::DispatchUserEvents(bool) at vcl/source/app/salusereventlist.cxx:108:17
> #41 in SvpSalInstance::DoYield(bool, bool) at vcl/headless/svpinst.cxx:428:19
> #42 in ImplYield(bool, bool) at vcl/source/app/svapp.cxx:446:48
> #43 in Application::Yield() at vcl/source/app/svapp.cxx:510:5
> #44 in Application::Execute() at vcl/source/app/svapp.cxx:427:9
> #45 in desktop::Desktop::Main() at desktop/source/app/app.cxx:1620:17
> #46 in ImplSVMain() at vcl/source/app/svmain.cxx:190:35
Not sure if there is a better fix that would guarantee that mxTerminateListener
can never be non-null in ~TransferableHelper. (It is cleared in
TransferableHelper::lostOwnership, so maybe a call to that is missing somewhere,
or there is a race here?)
Change-Id: I6d190b9565a352c1d454fd66ba598bf1b9e8d875
Reviewed-on: https://gerrit.libreoffice.org/80149
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Both table and paragraph styles can define paragraph properties for the
content of table cells, e.g. line spacing. The intended behavior is that
direct formatting has priority, then paragraph style, then the table
styles.
But in practice table style had priority: table style is turned into a
set of property name-value pairs by writerfilter/ code, then this is
applied to the content of a cell using SwXCell::setPropertyValue(). To
make sure that direct-format-from-table-style doesn't override
direct-format, there was already a check to not replace properties which
are set directly.
The problem is that in case the property value comes from a paragraph
style, that's not direct and still should have priority over
direct-format-from-table-style.
Fix this by checking for custom values not only in the paragraph's item
set, but also in its parents. Unless the parent would be the default
style, which doesn't count. Or in case the paragraph is numbered, which
complicates the situation, so leave that case unchanged.
Change-Id: Ib554247cdc51fee0d9a6c7a26aecd38442dfa692
Reviewed-on: https://gerrit.libreoffice.org/80146
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
We had a class FieldEntry in registry/source/reflwrit.cxx and a struct
FieldEntry in sd/source/filter/eppt/text.hxx. That causes problems
when code from both is linked into one binary, as in the iOS and
Android apps. The wrong FieldEntry destructor got called from the code
in sd which of course lead to a crash.
Fix by putting the one in registry into an unnamed namespace. (I put a
large chunk of the source file in it while at it.)
Change-Id: I1b32075f7aba256129b36ceb38eba605c882b9ff
Reviewed-on: https://gerrit.libreoffice.org/80141
Tested-by: Jenkins
Reviewed-by: Tor Lillqvist <tml@collabora.com>