[FarGroup/FarManager] master: gh-998: Fix a crash on plugin panels with funny names (dfdeb9a21)

0 views
Skip to first unread message

farg...@farmanager.com

unread,
Sep 5, 2025, 4:00:48 PM (3 days ago) Sep 5
to farco...@googlegroups.com
Repository : https://github.com/FarGroup/FarManager
On branch : master
Link : https://github.com/FarGroup/FarManager/commit/dfdeb9a218d9111305d62e561f0ed59309615588

>---------------------------------------------------------------

commit dfdeb9a218d9111305d62e561f0ed59309615588
Author: Alex Alabuzhev <alab...@gmail.com>
Date: Fri Sep 5 20:49:59 2025 +0100

gh-998: Fix a crash on plugin panels with funny names


>---------------------------------------------------------------

dfdeb9a218d9111305d62e561f0ed59309615588
far/changelog | 5 +++++
far/filelist.cpp | 19 +++++++++++--------
far/vbuild.m4 | 2 +-
3 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/far/changelog b/far/changelog
index 8090753fc..1727f651b 100644
--- a/far/changelog
+++ b/far/changelog
@@ -1,3 +1,8 @@
+--------------------------------------------------------------------------------
+drkns 2025-09-05 20:48:34+01:00 - build 6544
+
+1. gh-998: Fix a crash on plugin panels with funny names.
+
--------------------------------------------------------------------------------
mihnita 2025-08-31 19:43:00-07:00 - build 6543

diff --git a/far/filelist.cpp b/far/filelist.cpp
index 5f8d990b4..a02349d90 100644
--- a/far/filelist.cpp
+++ b/far/filelist.cpp
@@ -6882,14 +6882,17 @@ void FileList::UpdateIfRequired()
Update((m_KeepSelection? UPDATE_KEEP_SELECTION : 0) | UPDATE_IGNORE_VISIBLE);
}

-static bool ShouldHideFilesFromView(DWORD Attributes, const string &FileName)
+static bool ShouldHideFilesFromView(DWORD const Attributes, string_view const FileName)
{
if (Global->Opt->ShowHidden)
return false;
+
if (Attributes & (FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM))
return true;
+
if (!Global->Opt->TreatDotFilesAsHidden)
return false;
+
return FileName.starts_with(L'.');
}

@@ -7076,13 +7079,13 @@ void FileList::ReadFileNames(bool const KeepSelection, bool const UpdateEvenIfPa

for (const auto& fdata: Find)
{
+ if (ShouldHideFilesFromView(fdata.Attributes, fdata.FileName))
+ continue;
+
ErrorState = os::last_error();

const auto IsDirectory = os::fs::is_directory(fdata);

- if (ShouldHideFilesFromView(fdata.Attributes, fdata.FileName))
- continue;
-
if (UseFilter && !m_Filter->FileInFilter(fdata, fdata.FileName))
{
if (!IsDirectory)
@@ -7577,20 +7580,20 @@ void FileList::UpdatePlugin(bool const KeepSelection, bool const UpdateEvenIfPan

for (const auto& PanelItem: PanelData)
{
+ if (ShouldHideFilesFromView(PanelItem.FileAttributes, NullToEmpty(PanelItem.FileName)))
+ continue;
+
if (UseFilter && !(m_CachedOpenPanelInfo.Flags & OPIF_DISABLEFILTER))
{
if (!m_Filter->FileInFilter(PanelItem))
{
if (!(PanelItem.FileAttributes & FILE_ATTRIBUTE_DIRECTORY))
- m_FilteredExtensions.emplace(name_ext(PanelItem.FileName).second);
+ m_FilteredExtensions.emplace(name_ext(NullToEmpty(PanelItem.FileName)).second);

continue;
}
}

- if (ShouldHideFilesFromView(PanelItem.FileAttributes, PanelItem.FileName))
- continue;
-
FileListItem NewItem(PanelItem);

NewItem.SortGroup = (m_CachedOpenPanelInfo.Flags & OPIF_DISABLESORTGROUPS)? DEFAULT_SORT_GROUP : Global->CtrlObject->HiFiles->GetGroup(NewItem, this);
diff --git a/far/vbuild.m4 b/far/vbuild.m4
index aff74eed6..211186065 100644
--- a/far/vbuild.m4
+++ b/far/vbuild.m4
@@ -1 +1 @@
-6543
+6544


Reply all
Reply to author
Forward
0 new messages