Markéta Machová 2021-06-07 14:15:03 +00:00 committed by Git OBS Bridge
parent 1b95cf2675
commit 9f8675da64
3 changed files with 81 additions and 0 deletions

72
bsc1185797.patch Normal file
View File

@ -0,0 +1,72 @@
From db6efbaf5f9d6ae818afccec6a9fab219268b621 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Toma=C5=BE=20Vajngerl?= <tomaz.vajngerl@collabora.co.uk>
Date: Sun, 6 Jun 2021 20:55:28 +0900
Subject: [PATCH] tdf#142478 fix crash when searching and a viewshell change
occurs
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When searching a impress document for a word, and the word is in
notes as welll as in the document, a crash happens (only when
searching with "find all"). The regressing commit changed that the
search is now bound to a view (and to a viewshell). When searching
for words in notes and document, at the transition from "standard"
to "notes" page kind mode, the view and viewshells are destroyed
and the new one created again. The problem lies here as when we
destroy the viewshell, we also destroy the search context and
FuSearch objects, but we are still executing the search -> crash.
The solution for this is that when we change the page kind,
we take the FuSearch object from the old viewshell and put it
into the newly created viewshell, so that we keep the FuSearch
object alive and don't throw away the search context too.
Change-Id: I50931cca2a20c5704f7450e3cc8b3466af4c5a3e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116758
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
(cherry picked from commit 3b75f9add7ed80e803b0771d86892d6ca0f47e71)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116703
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
---
sd/source/ui/view/Outliner.cxx | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/sd/source/ui/view/Outliner.cxx b/sd/source/ui/view/Outliner.cxx
index 59e740b4bda1..70df0bd17bfe 100644
--- a/sd/source/ui/view/Outliner.cxx
+++ b/sd/source/ui/view/Outliner.cxx
@@ -61,6 +61,7 @@
#include <comphelper/lok.hxx>
#include <comphelper/scopeguard.hxx>
#include <VectorGraphicSearchContext.hxx>
+#include <fusearch.hxx>
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
@@ -1550,6 +1551,11 @@ void SdOutliner::SetViewMode (PageKind ePageKind)
bool bMatchMayExist = mbMatchMayExist;
sd::ViewShellBase& rBase = pViewShell->GetViewShellBase();
+
+ rtl::Reference<sd::FuSearch> xFuSearch;
+ if (pViewShell->GetView())
+ xFuSearch = pViewShell->GetView()->getSearchContext().getFunctionSearch();
+
SetViewShell(std::shared_ptr<sd::ViewShell>());
sd::framework::FrameworkHelper::Instance(rBase)->RequestView(
sViewURL,
@@ -1560,7 +1566,11 @@ void SdOutliner::SetViewMode (PageKind ePageKind)
// instead. But that would involve major restructuring of the
// Outliner code.
sd::framework::FrameworkHelper::Instance(rBase)->RequestSynchronousUpdate();
- SetViewShell(rBase.GetMainViewShell());
+
+ auto pNewViewShell = rBase.GetMainViewShell();
+ SetViewShell(pNewViewShell);
+ if (xFuSearch.is() && pNewViewShell->GetView())
+ pNewViewShell->GetView()->getSearchContext().setSearchFunction(xFuSearch);
// Switching to another view shell has intermediatly called
// EndSpelling(). A PrepareSpelling() is pending, so call that now.

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Thu May 27 11:27:04 UTC 2021 - Markéta Machová <mmachova@suse.com>
- Fix bsc#1185797: Searching in PPTX document makes LibreOffice crash
* bsc1185797.patch
-------------------------------------------------------------------
Wed May 26 13:32:48 UTC 2021 - Andras Timar <andras.timar@collabora.com>

View File

@ -107,6 +107,8 @@ Patch5: bsc1184961.patch
Patch6: gcc11-fix-error.patch
# bsc#1185505 - LO-L3: Text highlight "bleeds" when saving as PPTX
Patch7: bsc1185505.patch
# bsc#1185797 Searching in PPTX document makes LibreOffice crash
Patch8: bsc1185797.patch
# Build with java 8
Patch101: 0001-Revert-java-9-changes.patch
# try to save space by using hardlinks
@ -981,6 +983,7 @@ Provides %{langname} translations and additional resources (help files, etc.) fo
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%if 0%{?suse_version} < 1500
%patch101 -p1
%endif