sc/source/ui/view/gridwin.cxx |   12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

New commits:
commit c9ab5237afa7bb106e97a9afa036df723f0238e8
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Tue Feb 14 21:25:45 2023 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Wed Feb 15 08:48:56 2023 +0000

    Resolves: tdf#153622 crash in SvListView::SelectListEntry
    
    probably since:
    
    commit 4c8b1fa44d4f49510d3910981e649dcb08bceb36
    Date:   Fri Oct 28 13:15:00 2022 -0400
    
        tdf#151794 sc validate: honor NO_BLANK in Cell range dropdown
    
    Change-Id: Id6752126c0c8df8d813bc862e5533d05bba1b622
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147027
    Tested-by: Jenkins
    Reviewed-by: Justin Luth <jl...@mail.com>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index ade27511ab69..41db66bc82bd 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -1432,6 +1432,14 @@ void ScGridWindow::LaunchDataSelectMenu(const SCCOL 
nCol, const SCROW nRow)
     std::vector<ScTypedStrData> aStrings; // case sensitive
     // Fill List
     rDoc.GetDataEntries(nCol, nRow, nTab, aStrings, true /* bValidation */);
+
+    // IsIgnoreBlank allows blank values. Don't add empty string unless "Allow 
Empty Cells"
+    if (pData && !pData->IsIgnoreBlank())
+    {
+        auto lambda = [](const ScTypedStrData& rStr) { return 
rStr.GetString().isEmpty(); };
+        aStrings.erase(std::remove_if(aStrings.begin(), aStrings.end(), 
lambda), aStrings.end());
+    }
+
     if (aStrings.empty())
         bEmpty = true;
 
@@ -1447,10 +1455,8 @@ void ScGridWindow::LaunchDataSelectMenu(const SCCOL 
nCol, const SCROW nRow)
 
         for (const auto& rString : aStrings)
         {
-            // IsIgnoreBlank allows blank values. Don't add empty string 
unless "Allow Empty Cells"
             const OUString& rFilterString = rString.GetString();
-            if (!rFilterString.isEmpty() || !pData || pData->IsIgnoreBlank())
-                rFilterBox.append_text(rFilterString);
+            rFilterBox.append_text(rFilterString);
         }
 
         if (bWait)

Reply via email to