LibreOffice
LibreOffice is a popular fork of the open-source OpenOffice office suite.
www.libreoffice.org
Other Activity This Week
- Avoid UB
Mike Kaganski: as seen in - lok: add function getDocLanguages
Henry Castro: If the spell checker is disabled to use a remote spelling feature, the getLanguages function is obsolete. - sw: avoid unwanted initial content in split/follow fly frames
Miklos Vajna: If the fly on the first gets split, SwFrame::GetNextFlyLeaf() will create a follow fly frame. - capture output of package command and add to log on error
Christian Lohmaier: creating packages failed here and the logs aren't all that helpful without the output of the command that failed. - tdf#153304: Add undo entries and set modified in SwXFrame::setProperty*
Mike Kaganski: Similar to SwDoc::SetFlyFrameAttr; the latter should only set modified state on actual changes. - Add instructions for when building headless LO core for WASM
Tor Lillqvist: Change-Id: Ic5fb943f8c26d21d94bafb815963960bdd2f26b9 Reviewed-on: - UITest_textToColumns: fix indent and simplify code
Xisco Fauli: The wrong indent made those tests not to be executed OTOH, do not change the option replwarncb so it's enabled by default. - tdf#153296 improved markup for VML shapetype of Fontwork
Regina Henschel: In the current version of 'vml-shape-types' file the markup for the Fontwork shapes is missing or is so, that Word does not accept it as WordArt markup. - crashtesting: threaded import crash seen in forum-mso-en4-802501.xlsx
Caolán McNamara: sporadically reproducible with tsan and ./instdir/program/soffice.bin --headless --convert-to pdf ~/forum-mso-en4-802501.xlsx - add truncate-multiline for consistency
Caolán McNamara: Change-Id: I21263263ec9fc9d9e39e7b2ec32b54a7a75323a4 Reviewed-on: - Let executeAction always ProcessEventsToIdle
Stephan Bergmann: An ASan UITest_writer_tests7 UITEST_TEST_NAME=tdf135938.tdf135938.test_tdf135938_cross_reference_update occasionally failed for me with
> ==1994973==ERROR: AddressSanitizer: heap-use-after-free on address 0x60f00014d718 at pc 0x7f95f4946ffa bp 0x7f95907fd720 sp 0x7f95907fd718 > READ of size 8 at 0x60f00014d718 thread T33 > #0 in std::__cxx1998::vector<std::unique_ptr<SvLBoxItem, std::default_delete<SvLBoxItem>>, std::allocator<std::unique_ptr<SvLBoxItem, std::default_delete<SvLBoxItem>>>>::size() const at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/stl_vector.h:988:40 > #1 in SvTreeListEntry::ItemCount() const at vcl/source/treelist/treelistentry.cxx:110:20 > #2 in SvTabListBox::GetEntryText(SvTreeListEntry const*, unsigned short) at vcl/source/treelist/svtabbx.cxx:289:37 > #3 in SvTabListBox::GetEntryText(SvTreeListEntry*) const at vcl/source/treelist/svtabbx.cxx:280:12 > #4 in TreeListEntryUIObject::get_state() at vcl/source/treelist/uiobject.cxx:119:32 > #5 in UIObjectUnoObj::getState() at vcl/source/uitest/uno/uiobject_uno.cxx:164:29 > #6 in non-virtual thunk to UIObjectUnoObj::getState() at vcl/source/uitest/uno/uiobject_uno.cxx > #7 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 > #8 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 > #9 in unoInterfaceProxyDispatch at bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:413:13 > #10 in binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny*, std::__debug::vector<binaryurp::BinaryAny, std::allocator<binaryurp::BinaryAny>>*) const at binaryurp/source/incomingrequest.cxx:236:13 > #11 in binaryurp::IncomingRequest::execute() const at binaryurp/source/incomingrequest.cxx:79:26 > #12 in request at binaryurp/source/reader.cxx:86:9 > #13 in cppu_threadpool::JobQueue::enter(void const*, bool) at cppu/source/threadpool/jobqueue.cxx:100:17 > #14 in cppu_threadpool::ORequestThread::run() at cppu/source/threadpool/thread.cxx:165:31 > > 0x60f00014d718 is located 120 bytes inside of 168-byte region [0x60f00014d6a0,0x60f00014d748) > freed by thread T0 here: > #0 in operator delete(void*, unsigned long) at ~/github.com/llvm/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:164:3 > #1 in SvTreeListEntry::~SvTreeListEntry() at vcl/source/treelist/treelistentry.cxx:62:1 > #2 in std::default_delete<SvTreeListEntry>::operator()(SvTreeListEntry*) const at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/unique_ptr.h:102:2 > #3 in std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>::~unique_ptr() at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/unique_ptr.h:407:4 > #4 in void std::destroy_at<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>>(std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>*) at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/stl_construct.h:88:15 > #5 in void std::_Destroy<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>>(std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>*) at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/stl_construct.h:149:7 > #6 in void std::_Destroy_aux<false>::__destroy<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>*>(std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>*, std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>*) at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/stl_construct.h:163:6 > #7 in void std::_Destroy<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>*>(std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>*, std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>*) at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/stl_construct.h:195:7 > #8 in void std::_Destroy<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>*, std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>>(std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>*, std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>*, std::allocator<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>>&) at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/alloc_traits.h:947:7 > #9 in std::__cxx1998::vector<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>, std::allocator<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>>>::_M_erase_at_end(std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>*) at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/stl_vector.h:1932:6 > #10 in std::__cxx1998::vector<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>, std::allocator<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>>>::clear() at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/stl_vector.h:1601:9 > #11 in std::__debug::vector<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>, std::allocator<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>>>::clear() at ~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/debug/vector:729:9 > #12 in SvTreeListEntry::ClearChildren() at vcl/source/treelist/treelistentry.cxx:28:16 > #13 in SvTreeList::Clear() at vcl/source/treelist/treelist.cxx:123:16 > #14 in SvTreeListBox::Clear() at vcl/source/treelist/treelistbox.cxx:422:17 > #15 in SalInstanceTreeView::clear() at vcl/source/app/salvtables.cxx:4240:18 > #16 in SwFieldRefPage::Reset(SfxItemSet const*) at sw/source/ui/fldui/fldref.cxx:175:16 > #17 in SwFieldPage::EditNewField(bool) at sw/source/ui/fldui/fldpage.cxx:111:5 > #18 in SwFieldDlg::ReInitTabPage(std::basic_string_view<char, std::char_traits<char>>, bool) at sw/source/ui/fldui/fldtdlg.cxx:218:16 > #19 in SwFieldDlg::Activate() at sw/source/ui/fldui/fldtdlg.cxx:239:9 > #20 in SwChildWinWrapper::UpdateHdl(Timer*) at sw/source/uibase/fldui/fldwrap.cxx:42:26 > #21 in SwChildWinWrapper::LinkStubUpdateHdl(void*, Timer*) at sw/source/uibase/fldui/fldwrap.cxx:39:1 > #22 in Link<Timer*, void>::Call(Timer*) const at include/tools/link.hxx:111:45 > #23 in Timer::Invoke() at vcl/source/app/timer.cxx:75:21 > #24 in Scheduler::CallbackTaskScheduling() at vcl/source/app/scheduler.cxx:481:20 > #25 in SalTimer::CallCallback() at vcl/inc/saltimer.hxx:54:13 > #26 in SvpSalInstance::CheckTimeout(bool) at vcl/headless/svpinst.cxx:161:53 > #27 in SvpSalInstance::ImplYield(bool, bool) at vcl/headless/svpinst.cxx:399:17 > #28 in SvpSalInstance::DoYield(bool, bool) at vcl/headless/svpinst.cxx:471:21 > #29 in ImplYield(bool, bool) at vcl/source/app/svapp.cxx:475:48 > #30 in Application::Yield() at vcl/source/app/svapp.cxx:559:5 > #31 in Application::Execute() at vcl/source/app/svapp.cxx:453:13 > #32 in desktop::Desktop::Main() at desktop/source/app/app.cxx:1604:13
causing
> ERROR: test_tdf135938_cross_reference_update (tdf135938.tdf135938) > ----------------------------------------------------------------------> Traceback (most recent call last): > File "uitest/uitest/test.py", line 125, in execute_dialog_through_command > yield xDialog > File "uitest/uitest/test.py", line 140, in execute_modeless_dialog_through_command > yield xDialog > File "sw/qa/uitest/writer_tests7/tdf135938.py", line 40, in test_tdf135938_cross_reference_update > self.assertEqual("ABC", get_state_as_dict(xSelect.getChild(0))["Text"]) > File "uitest/uitest/uihelper/common.py", line 13, in get_state_as_dict > return convert_property_values_to_dict(ui_object.getState()) > uitest.uihelper.common.com.sun.star.lang.DisposedException: Binary URP bridge disposed during call at binaryurp/source/bridge.cxx:613
The issue apparently is that TreeListEntryUIObject UNO objects, introduced in 71f562f8f77f14b76fde4329f7238fe2e7d6a054 "uitest: support tree lists", reference SvTreeListEntry instances by pointers that can apparently go stale while those UNO objects are still alive. - Throw early on invalid state
Mike Kaganski: The result of GetFrameFormat call was dereferenced unconditionally in the unit conversion code, despite it can obviously return NULL. - Finally drop undocumented rtl_[u]String_newFromStr null argument support
Stephan Bergmann: ...executing on the TODO left by 4f0c70fb5554325e0cc2129741175bf07de22029 "Avoid calling OString ctor with null pointer" in late 2020. - sw: implement "Theme" property for the XDrawPage in Writer
Tomaž Vajngerl: Change-Id: I8eed04f0ccb2e626a648abcaecd957b6f62c39d8 Reviewed-on: - tdf#152073 qt: Draw background when drawing frame
Michael Weghorn: For native drawing of a frame (border), use the window background color as default color.
As mentioned in commit f39f21d92ec83c3a5062f29dd26214fc83012c06 ("tdf#138010 (IV) VclScrolledWindow: Use actual border width"), the Qt/KDE Breeze style uses a frame width of 2, with the actual 1 pixel border being surrounded by a 1 pixel padding/margin.
Transparent background did not ensure that the 1 pixel padding/margin is repainted and could thus result in artifacts from what was painted to that location previously (s. - add default mode lines
Caolán McNamara: Change-Id: Ie0485f52f81f31f821f8a6ebc4720528da33fa48 Reviewed-on: - lingucomponent: implement custom parse response rest protocol
Henry Castro: Response: - lingucomponent: implement custom request http rest protocol
Henry Castro: Request: - Resolves tdf#137269 - Disable ToC preview by default
Heiko Tietze: Dialog is too large with the preview for small screens Setting is stored so users who enable it will have the preview next time - sd: use XTheme to transport the theme to xmloff import/export
Tomaž Vajngerl: Refactor the existing places and tests in Impress code (sd) to use it instead.
Also keep the old property of construction and view of the theme with a sequence of property values, but under the new property named "ThemeUnoRepresentation". - svtools: add new entry "RestProtocol"
Henry Castro - external/skia: Another constexpr template point of instantiation issue
Stephan Bergmann: ...with --with-latest-c++ after 9c9a711ac5d8f32ac318d0e4ecab7b3a26bc2150 "Update skia to m111", - tdf#118324 Treat blank ? in integer
Laurent Balland: Restore and update change 56352 Test of - Update skia to m111
Noel Grandin: (*) Remove patches already upstream - sw: add an initial SwFrame::GetNextFlyLeaf()
Miklos Vajna: To be called by SwFrame::GetLeaf() in the future. - tdf#151548 sw content controls: keyboard navigation with tab key
Justin Luth: Combine content controls with legacy formfield controls in keyboard tab navigation.
MS Word (I tested 2010) is extremely irrational and inconsistent in its behaviour, so I modeled my implementation on the specification and general logic, and not at all on "compatible misbehaviour".
There is a third category of form control (activeX rich content), but these are mapped to internal LO controls that are only exposed at VCL level, and don't pass the keystrokes back to SW.