diff --git a/include/dfm-io/dfm-io/denumerator.h b/include/dfm-io/dfm-io/denumerator.h index 69438d04..dc826272 100644 --- a/include/dfm-io/dfm-io/denumerator.h +++ b/include/dfm-io/dfm-io/denumerator.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2020 - 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/dfm-io/dfm-io/denumerator.cpp b/src/dfm-io/dfm-io/denumerator.cpp index 21a93230..541244c5 100644 --- a/src/dfm-io/dfm-io/denumerator.cpp +++ b/src/dfm-io/dfm-io/denumerator.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2020 - 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -654,6 +654,15 @@ bool DEnumerator::hasNext() const return true; } + // 枚举完成,关闭并释放当前枚举器,释放 fd + if (!d->stackEnumerator.isEmpty()) { + GFileEnumerator *enumerator = d->stackEnumerator.pop(); + if (enumerator) { + g_file_enumerator_close(enumerator, nullptr, nullptr); + g_object_unref(enumerator); + } + } + return false; }