From 4ad69790f5864c42fd1296b5bfe43e7e77350516 Mon Sep 17 00:00:00 2001 From: Arnaud Ruiz <arnaud.ruizsin@gmail.com> Date: Fri, 26 Jul 2019 22:19:18 +1200 Subject: Fix for "Too many open files" bug kdiff3 fails to close files properly leading to stability and speed issues. Reviewers: mreeves Reviewed By: mreeves Differential Revision: https://phabricator.kde.org/D22294 --- src/directorymergewindow.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/directorymergewindow.cpp b/src/directorymergewindow.cpp index c8efd81..5d0d939 100644 --- a/src/directorymergewindow.cpp +++ b/src/directorymergewindow.cpp @@ -741,6 +741,7 @@ bool DirectoryMergeWindow::DirectoryMergeWindowPrivate::fastFileComparison( if(!fi2.open(QIODevice::ReadOnly)) { + fi1.close(); status = fi2.errorString(); return bEqual; } @@ -758,12 +759,16 @@ bool DirectoryMergeWindow::DirectoryMergeWindowPrivate::fastFileComparison( if(len != fi1.read(&buf1[0], len)) { status = fi1.errorString(); + fi1.close(); + fi2.close(); return bEqual; } if(len != fi2.read(&buf2[0], len)) { - status = fi2.errorString();; + status = fi2.errorString(); + fi1.close(); + fi2.close(); return bEqual; } -- cgit v1.1 From 0737cc3e2ddf75fcd69efb385303e0cab3e2db48 Mon Sep 17 00:00:00 2001 From: Michael Reeves <reeves.87@gmail.com> Date: Fri, 26 Jul 2019 13:19:14 -0400 Subject: Fix botched merge BUG: 408991 --- src/directorymergewindow.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/directorymergewindow.cpp b/src/directorymergewindow.cpp index 5d0d939..1404c01 100644 --- a/src/directorymergewindow.cpp +++ b/src/directorymergewindow.cpp @@ -774,6 +774,8 @@ bool DirectoryMergeWindow::DirectoryMergeWindowPrivate::fastFileComparison( if(memcmp(&buf1[0], &buf2[0], len) != 0) { + fi1.close(); + fi2.close(); bError = false; return bEqual; } @@ -785,6 +787,9 @@ bool DirectoryMergeWindow::DirectoryMergeWindowPrivate::fastFileComparison( // If the program really arrives here, then the files are really equal. bError = false; bEqual = true; + + fi1.close(); + fi2.close(); return bEqual; } -- cgit v1.1