pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/devel/kdiff3



Module Name:    pkgsrc
Committed By:   gutteridge
Date:           Thu Jan 16 02:37:30 UTC 2020

Modified Files:
        pkgsrc/devel/kdiff3: Makefile distinfo
Added Files:
        pkgsrc/devel/kdiff3/patches: patch-src_directorymergewindow.cpp
            patch-src_guiutils.h patch-src_kdiff3.cpp
            patch-src_mergeresultwindow.cpp patch-src_mergeresultwindow.h
            patch-src_pdiff.cpp

Log Message:
kdiff3: add patches to fix crashes, etc.


To generate a diff of this commit:
cvs rdiff -u -r1.59 -r1.60 pkgsrc/devel/kdiff3/Makefile
cvs rdiff -u -r1.8 -r1.9 pkgsrc/devel/kdiff3/distinfo
cvs rdiff -u -r0 -r1.1 \
    pkgsrc/devel/kdiff3/patches/patch-src_directorymergewindow.cpp \
    pkgsrc/devel/kdiff3/patches/patch-src_guiutils.h \
    pkgsrc/devel/kdiff3/patches/patch-src_kdiff3.cpp \
    pkgsrc/devel/kdiff3/patches/patch-src_mergeresultwindow.cpp \
    pkgsrc/devel/kdiff3/patches/patch-src_mergeresultwindow.h \
    pkgsrc/devel/kdiff3/patches/patch-src_pdiff.cpp

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/devel/kdiff3/Makefile
diff -u pkgsrc/devel/kdiff3/Makefile:1.59 pkgsrc/devel/kdiff3/Makefile:1.60
--- pkgsrc/devel/kdiff3/Makefile:1.59   Sun Nov  3 10:39:15 2019
+++ pkgsrc/devel/kdiff3/Makefile        Thu Jan 16 02:37:30 2020
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.59 2019/11/03 10:39:15 rillig Exp $
+# $NetBSD: Makefile,v 1.60 2020/01/16 02:37:30 gutteridge Exp $
 
 VERSION=       1.8.1
-PKGREVISION=   1
+PKGREVISION=   2
 DISTNAME=      kdiff3-${VERSION}
 CATEGORIES=    devel
 MASTER_SITES=  ${MASTER_SITE_KDE:=kdiff3/}

Index: pkgsrc/devel/kdiff3/distinfo
diff -u pkgsrc/devel/kdiff3/distinfo:1.8 pkgsrc/devel/kdiff3/distinfo:1.9
--- pkgsrc/devel/kdiff3/distinfo:1.8    Sun Nov  3 04:01:32 2019
+++ pkgsrc/devel/kdiff3/distinfo        Thu Jan 16 02:37:30 2020
@@ -1,7 +1,13 @@
-$NetBSD: distinfo,v 1.8 2019/11/03 04:01:32 gutteridge Exp $
+$NetBSD: distinfo,v 1.9 2020/01/16 02:37:30 gutteridge Exp $
 
 SHA1 (kdiff3-1.8.1.tar.xz) = cfb63e7fb8ef81e9ebc0ae47d6922f25a32a1ef9
 RMD160 (kdiff3-1.8.1.tar.xz) = b5076a50461f3612071aa08732c1d7c3b5ec5d8b
 SHA512 (kdiff3-1.8.1.tar.xz) = 09cddac0f3adffa91f1986dfb50982deb1c6a31c232215da8a2a396d7525b4d28ef6d3febdcd4ba89cf9f6371a7b34441ef4e10aa0e3468fadf95fb7f78d7720
 Size (kdiff3-1.8.1.tar.xz) = 897692 bytes
+SHA1 (patch-src_directorymergewindow.cpp) = a2b429584e30467501ccadbc9266ffbf05250900
+SHA1 (patch-src_guiutils.h) = 82bb9629ce73057beb5e81cac031ef9b881d90ab
+SHA1 (patch-src_kdiff3.cpp) = d5c497d02064f716ea8a26521061605477fd9272
+SHA1 (patch-src_mergeresultwindow.cpp) = c7da5bcc2f9834a48e1fdd90d070295c6dc62332
+SHA1 (patch-src_mergeresultwindow.h) = 22412d26ff9879abd4759387fbd3fd195593b028
+SHA1 (patch-src_pdiff.cpp) = d88157d208116c63cbd7cc85b96a2717bd675a80
 SHA1 (patch-src_smalldialogs.cpp) = d189a1631ba5bed1d794babb11764eff40efcf07

Added files:

Index: pkgsrc/devel/kdiff3/patches/patch-src_directorymergewindow.cpp
diff -u /dev/null pkgsrc/devel/kdiff3/patches/patch-src_directorymergewindow.cpp:1.1
--- /dev/null   Thu Jan 16 02:37:30 2020
+++ pkgsrc/devel/kdiff3/patches/patch-src_directorymergewindow.cpp      Thu Jan 16 02:37:30 2020
@@ -0,0 +1,52 @@
+$NetBSD: patch-src_directorymergewindow.cpp,v 1.1 2020/01/16 02:37:30 gutteridge Exp $
+
+kdiff3 fails to close files properly leading to stability and speed issues.
+Patches via Fedora:
+https://src.fedoraproject.org/rpms/kdiff3/c/8a700c10780b157e681637404e97718f5ba0cff2
+https://src.fedoraproject.org/rpms/kdiff3/c/bc38b46ef5c96b2b7800e1195b3895527bceea65
+
+--- src/directorymergewindow.cpp.orig  2019-05-18 01:01:30.000000000 +0000
++++ src/directorymergewindow.cpp
+@@ -741,6 +741,7 @@ bool DirectoryMergeWindow::DirectoryMerg
+ 
+     if(!fi2.open(QIODevice::ReadOnly))
+     {
++        fi1.close();
+         status = fi2.errorString();
+         return bEqual;
+     }
+@@ -758,17 +759,23 @@ bool DirectoryMergeWindow::DirectoryMerg
+         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;
+         }
+ 
+         if(memcmp(&buf1[0], &buf2[0], len) != 0)
+         {
++            fi1.close();
++            fi2.close();
+             bError = false;
+             return bEqual;
+         }
+@@ -780,6 +787,9 @@ bool DirectoryMergeWindow::DirectoryMerg
+     // If the program really arrives here, then the files are really equal.
+     bError = false;
+     bEqual = true;
++
++    fi1.close();
++    fi2.close();
+     return bEqual;
+ }
+ 
Index: pkgsrc/devel/kdiff3/patches/patch-src_guiutils.h
diff -u /dev/null pkgsrc/devel/kdiff3/patches/patch-src_guiutils.h:1.1
--- /dev/null   Thu Jan 16 02:37:30 2020
+++ pkgsrc/devel/kdiff3/patches/patch-src_guiutils.h    Thu Jan 16 02:37:30 2020
@@ -0,0 +1,106 @@
+$NetBSD: patch-src_guiutils.h,v 1.1 2020/01/16 02:37:30 gutteridge Exp $
+
+Fix missing menu items. Patch via Fedora:
+https://src.fedoraproject.org/rpms/kdiff3/c/bc38b46ef5c96b2b7800e1195b3895527bceea65
+
+--- src/guiutils.h.orig        2019-05-18 01:01:30.000000000 +0000
++++ src/guiutils.h
+@@ -129,6 +129,98 @@ namespace GuiUtils {
+       theAction->setIconText( iconText );
+       return theAction;
+    }
++
++
++   //Allow actions to be created without connecting them immediately.
++
++   template <class T>
++      inline typename std::enable_if<std::is_same<T, QAction>::value, QAction>::type* createAction(
++       const QString& text,
++       KActionCollection* ac,
++       const QString& actionName)
++   {
++       Q_ASSERT(ac != nullptr);
++       QAction* theAction;
++
++       theAction = ac->addAction(actionName);
++       theAction->setText(text);
++
++       return theAction;
++   }
++
++   template <class T>
++   inline typename std::enable_if<std::is_same<T, KToggleAction>::value, KToggleAction>::type* createAction(
++                   const QString& text,
++                   KActionCollection* ac,
++                   const QString &actionName)    {
++      Q_ASSERT( ac != nullptr );
++      KToggleAction* theAction = new KToggleAction(ac);
++      ac->addAction( actionName, theAction );
++      theAction->setText( text );
++      return theAction;
++   }
++
++   template <class T>
++   T* createAction(
++     const QString& text,
++     const QKeySequence& shortcut,
++     KActionCollection* ac,
++     const QString &actionName)
++   {
++      T* theAction = createAction<T>( text, ac, actionName );
++      ac->setDefaultShortcut(theAction, shortcut);
++      return theAction;
++   }
++   template <class T>
++   T* createAction(
++      const QString& text,
++      const QIcon& icon,
++      KActionCollection* ac,
++      const QString &actionName)
++   {
++      T* theAction = createAction<T>( text, ac, actionName );
++      theAction->setIcon( icon );
++      return theAction;
++   }
++   template <class T>
++   T* createAction(
++      const QString& text,
++      const QIcon& icon,
++      const QString& iconText,
++      KActionCollection* ac,
++      const QString &actionName)
++   {
++      T* theAction = createAction<T>( text, ac, actionName );
++      theAction->setIcon( icon );
++      theAction->setIconText( iconText );
++      return theAction;
++   }
++   template <class T>
++   T* createAction(
++     const QString& text,
++     const QIcon& icon,
++     const QKeySequence& shortcut,
++     KActionCollection* ac,
++     const QString &actionName)
++   {
++      T* theAction = createAction<T>( text, shortcut, ac, actionName );
++      theAction->setIcon( icon );
++      return theAction;
++   }
++   template <class T>
++   T* createAction(
++         const QString& text,
++         const QIcon& icon,
++         const QString& iconText,
++         const QKeySequence& shortcut,
++         KActionCollection* ac,
++         const QString &actionName)
++   {
++      T* theAction = createAction<T>( text, shortcut, ac, actionName );
++      theAction->setIcon( icon );
++      theAction->setIconText( iconText );
++      return theAction;
++   }
+ }
+ 
+ #endif
Index: pkgsrc/devel/kdiff3/patches/patch-src_kdiff3.cpp
diff -u /dev/null pkgsrc/devel/kdiff3/patches/patch-src_kdiff3.cpp:1.1
--- /dev/null   Thu Jan 16 02:37:30 2020
+++ pkgsrc/devel/kdiff3/patches/patch-src_kdiff3.cpp    Thu Jan 16 02:37:30 2020
@@ -0,0 +1,16 @@
+$NetBSD: patch-src_kdiff3.cpp,v 1.1 2020/01/16 02:37:30 gutteridge Exp $
+
+Fix missing menu items. Patch via Fedora:
+https://src.fedoraproject.org/rpms/kdiff3/c/bc38b46ef5c96b2b7800e1195b3895527bceea65
+
+--- src/kdiff3.cpp.orig        2019-05-18 01:01:30.000000000 +0000
++++ src/kdiff3.cpp
+@@ -312,6 +312,8 @@ KDiff3App::KDiff3App(QWidget* pParent, c
+     ///////////////////////////////////////////////////////////////////
+     // call inits to invoke all other construction parts
+     initActions(actionCollection());
++    MergeResultWindow::initActions(actionCollection());
++
+     initStatusBar();
+ 
+     m_pFindDialog = new FindDialog(this);
Index: pkgsrc/devel/kdiff3/patches/patch-src_mergeresultwindow.cpp
diff -u /dev/null pkgsrc/devel/kdiff3/patches/patch-src_mergeresultwindow.cpp:1.1
--- /dev/null   Thu Jan 16 02:37:30 2020
+++ pkgsrc/devel/kdiff3/patches/patch-src_mergeresultwindow.cpp Thu Jan 16 02:37:30 2020
@@ -0,0 +1,73 @@
+$NetBSD: patch-src_mergeresultwindow.cpp,v 1.1 2020/01/16 02:37:30 gutteridge Exp $
+
+Fix missing menu items. Patch via Fedora:
+https://src.fedoraproject.org/rpms/kdiff3/c/bc38b46ef5c96b2b7800e1195b3895527bceea65
+
+--- src/mergeresultwindow.cpp.orig     2019-05-18 01:01:30.000000000 +0000
++++ src/mergeresultwindow.cpp
+@@ -55,6 +55,16 @@ int g_bAutoSolve = true;
+ 
+ #undef leftInfoWidth
+ 
++QAction* MergeResultWindow::chooseAEverywhere = nullptr;
++QAction* MergeResultWindow::chooseBEverywhere = nullptr;
++QAction* MergeResultWindow::chooseCEverywhere = nullptr;
++QAction* MergeResultWindow::chooseAForUnsolvedConflicts = nullptr;
++QAction* MergeResultWindow::chooseBForUnsolvedConflicts = nullptr;
++QAction* MergeResultWindow::chooseCForUnsolvedConflicts = nullptr;
++QAction* MergeResultWindow::chooseAForUnsolvedWhiteSpaceConflicts = nullptr;
++QAction* MergeResultWindow::chooseBForUnsolvedWhiteSpaceConflicts = nullptr;
++QAction* MergeResultWindow::chooseCForUnsolvedWhiteSpaceConflicts = nullptr;
++
+ MergeResultWindow::MergeResultWindow(
+     QWidget* pParent,
+     Options* pOptions,
+@@ -148,6 +158,8 @@ void MergeResultWindow::init(
+     showUnsolvedConflictsStatusMessage();
+ }
+ 
++//This must be called before KXMLGui::SetXMLFile and friends or the actions will not be shown in the menu.
++//At that point in startup we don't have a MergeResultWindow object so we cannot connect the signals yet.
+ void MergeResultWindow::initActions(KActionCollection* ac)
+ {
+     if(ac == nullptr){
+@@ -155,15 +167,30 @@ void MergeResultWindow::initActions(KAct
+         exit(-1);//we cannot recover from this.
+     }
+ 
+-    chooseAEverywhere = GuiUtils::createAction<QAction>(i18n("Choose A Everywhere"), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_1), this, &MergeResultWindow::slotChooseAEverywhere, ac, 
"merge_choose_a_everywhere");
+-    chooseBEverywhere = GuiUtils::createAction<QAction>(i18n("Choose B Everywhere"), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_2), this, &MergeResultWindow::slotChooseBEverywhere, ac, 
"merge_choose_b_everywhere");
+-    chooseCEverywhere = GuiUtils::createAction<QAction>(i18n("Choose C Everywhere"), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_3), this, &MergeResultWindow::slotChooseCEverywhere, ac, 
"merge_choose_c_everywhere");
+-    chooseAForUnsolvedConflicts = GuiUtils::createAction<QAction>(i18n("Choose A for All Unsolved Conflicts"), this, &MergeResultWindow::slotChooseAForUnsolvedConflicts, ac, 
"merge_choose_a_for_unsolved_conflicts");
+-    chooseBForUnsolvedConflicts = GuiUtils::createAction<QAction>(i18n("Choose B for All Unsolved Conflicts"), this, &MergeResultWindow::slotChooseBForUnsolvedConflicts, ac, 
"merge_choose_b_for_unsolved_conflicts");
+-    chooseCForUnsolvedConflicts = GuiUtils::createAction<QAction>(i18n("Choose C for All Unsolved Conflicts"), this, &MergeResultWindow::slotChooseCForUnsolvedConflicts, ac, 
"merge_choose_c_for_unsolved_conflicts");
+-    chooseAForUnsolvedWhiteSpaceConflicts = GuiUtils::createAction<QAction>(i18n("Choose A for All Unsolved Whitespace Conflicts"), this, 
&MergeResultWindow::slotChooseAForUnsolvedWhiteSpaceConflicts, ac, "merge_choose_a_for_unsolved_whitespace_conflicts");
+-    chooseBForUnsolvedWhiteSpaceConflicts = GuiUtils::createAction<QAction>(i18n("Choose B for All Unsolved Whitespace Conflicts"), this, 
&MergeResultWindow::slotChooseBForUnsolvedWhiteSpaceConflicts, ac, "merge_choose_b_for_unsolved_whitespace_conflicts");
+-    chooseCForUnsolvedWhiteSpaceConflicts = GuiUtils::createAction<QAction>(i18n("Choose C for All Unsolved Whitespace Conflicts"), this, 
&MergeResultWindow::slotChooseCForUnsolvedWhiteSpaceConflicts, ac, "merge_choose_c_for_unsolved_whitespace_conflicts");
++    chooseAEverywhere = GuiUtils::createAction<QAction>(i18n("Choose A Everywhere"), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_1), ac, "merge_choose_a_everywhere");
++    chooseBEverywhere = GuiUtils::createAction<QAction>(i18n("Choose B Everywhere"), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_2), ac, "merge_choose_b_everywhere");
++    chooseCEverywhere = GuiUtils::createAction<QAction>(i18n("Choose C Everywhere"), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_3), ac, "merge_choose_c_everywhere");
++    chooseAForUnsolvedConflicts = GuiUtils::createAction<QAction>(i18n("Choose A for All Unsolved Conflicts"), ac, "merge_choose_a_for_unsolved_conflicts");
++    chooseBForUnsolvedConflicts = GuiUtils::createAction<QAction>(i18n("Choose B for All Unsolved Conflicts"), ac, "merge_choose_b_for_unsolved_conflicts");
++    chooseCForUnsolvedConflicts = GuiUtils::createAction<QAction>(i18n("Choose C for All Unsolved Conflicts"), ac, "merge_choose_c_for_unsolved_conflicts");
++    chooseAForUnsolvedWhiteSpaceConflicts = GuiUtils::createAction<QAction>(i18n("Choose A for All Unsolved Whitespace Conflicts"), ac, "merge_choose_a_for_unsolved_whitespace_conflicts");
++    chooseBForUnsolvedWhiteSpaceConflicts = GuiUtils::createAction<QAction>(i18n("Choose B for All Unsolved Whitespace Conflicts"), ac, "merge_choose_b_for_unsolved_whitespace_conflicts");
++    chooseCForUnsolvedWhiteSpaceConflicts = GuiUtils::createAction<QAction>(i18n("Choose C for All Unsolved Whitespace Conflicts"), ac, "merge_choose_c_for_unsolved_whitespace_conflicts");
++}
++
++void MergeResultWindow::connectActions()
++{
++    QObject::connect(chooseAEverywhere, &QAction::triggered, this, &MergeResultWindow::slotChooseAEverywhere);
++    QObject::connect(chooseBEverywhere, &QAction::triggered, this, &MergeResultWindow::slotChooseBEverywhere);
++    QObject::connect(chooseCEverywhere, &QAction::triggered, this, &MergeResultWindow::slotChooseCEverywhere);
++
++    QObject::connect(chooseAForUnsolvedConflicts, &QAction::triggered, this, &MergeResultWindow::slotChooseAForUnsolvedConflicts);
++    QObject::connect(chooseBForUnsolvedConflicts, &QAction::triggered, this, &MergeResultWindow::slotChooseBForUnsolvedConflicts);
++    QObject::connect(chooseCForUnsolvedConflicts, &QAction::triggered, this, &MergeResultWindow::slotChooseCForUnsolvedConflicts);
++
++    QObject::connect(chooseAForUnsolvedWhiteSpaceConflicts, &QAction::triggered, this, &MergeResultWindow::slotChooseAForUnsolvedWhiteSpaceConflicts);
++    QObject::connect(chooseBForUnsolvedWhiteSpaceConflicts, &QAction::triggered, this, &MergeResultWindow::slotChooseBForUnsolvedWhiteSpaceConflicts);
++    QObject::connect(chooseCForUnsolvedWhiteSpaceConflicts, &QAction::triggered, this, &MergeResultWindow::slotChooseCForUnsolvedWhiteSpaceConflicts);
+ }
+ 
+ void MergeResultWindow::showUnsolvedConflictsStatusMessage()
Index: pkgsrc/devel/kdiff3/patches/patch-src_mergeresultwindow.h
diff -u /dev/null pkgsrc/devel/kdiff3/patches/patch-src_mergeresultwindow.h:1.1
--- /dev/null   Thu Jan 16 02:37:30 2020
+++ pkgsrc/devel/kdiff3/patches/patch-src_mergeresultwindow.h   Thu Jan 16 02:37:30 2020
@@ -0,0 +1,53 @@
+$NetBSD: patch-src_mergeresultwindow.h,v 1.1 2020/01/16 02:37:30 gutteridge Exp $
+
+Fix intermittent crashes. Patch via Fedora:
+https://src.fedoraproject.org/rpms/kdiff3/c/8a700c10780b157e681637404e97718f5ba0cff2
+
+Fix missing menu items. Patch via Fedora:
+https://src.fedoraproject.org/rpms/kdiff3/c/bc38b46ef5c96b2b7800e1195b3895527bceea65
+
+--- src/mergeresultwindow.h.orig       2019-05-18 01:01:30.000000000 +0000
++++ src/mergeresultwindow.h
+@@ -40,7 +40,16 @@ public:
+       const Diff3LineList* pDiff3LineList,
+       TotalDiffStatus* pTotalDiffStatus
+       );
+-   void initActions(KActionCollection* ac);
++
++   inline void clearMergeList()
++   {
++       m_mergeLineList.clear();
++       m_totalSize = 0;
++   }
++
++   static void initActions(KActionCollection* ac);
++
++   void connectActions();
+    void reset();
+ 
+    bool saveDocument( const QString& fileName, QTextCodec* pEncoding, e_LineEndStyle eLineEndStyle );
+@@ -119,15 +128,15 @@ private:
+    void merge(bool bAutoSolve, e_SrcSelector defaultSelector, bool bConflictsOnly=false, bool bWhiteSpaceOnly=false );
+    QString getString( int lineIdx );
+ 
+-   QAction* chooseAEverywhere = nullptr;
+-   QAction* chooseBEverywhere = nullptr;
+-   QAction* chooseCEverywhere = nullptr;
+-   QAction* chooseAForUnsolvedConflicts = nullptr;
+-   QAction* chooseBForUnsolvedConflicts = nullptr;
+-   QAction* chooseCForUnsolvedConflicts = nullptr;
+-   QAction* chooseAForUnsolvedWhiteSpaceConflicts = nullptr;
+-   QAction* chooseBForUnsolvedWhiteSpaceConflicts = nullptr;
+-   QAction* chooseCForUnsolvedWhiteSpaceConflicts = nullptr;
++   static QAction* chooseAEverywhere;
++   static QAction* chooseBEverywhere;
++   static QAction* chooseCEverywhere;
++   static QAction* chooseAForUnsolvedConflicts;
++   static QAction* chooseBForUnsolvedConflicts;
++   static QAction* chooseCForUnsolvedConflicts;
++   static QAction* chooseAForUnsolvedWhiteSpaceConflicts;
++   static QAction* chooseBForUnsolvedWhiteSpaceConflicts;
++   static QAction* chooseCForUnsolvedWhiteSpaceConflicts;
+ 
+    Options* m_pOptions = nullptr;
+ 
Index: pkgsrc/devel/kdiff3/patches/patch-src_pdiff.cpp
diff -u /dev/null pkgsrc/devel/kdiff3/patches/patch-src_pdiff.cpp:1.1
--- /dev/null   Thu Jan 16 02:37:30 2020
+++ pkgsrc/devel/kdiff3/patches/patch-src_pdiff.cpp     Thu Jan 16 02:37:30 2020
@@ -0,0 +1,28 @@
+$NetBSD: patch-src_pdiff.cpp,v 1.1 2020/01/16 02:37:30 gutteridge Exp $
+
+Fix intermittent crashes. Patch via Fedora:
+https://src.fedoraproject.org/rpms/kdiff3/c/8a700c10780b157e681637404e97718f5ba0cff2
+
+Fix missing menu items. Patch via Fedora:
+https://src.fedoraproject.org/rpms/kdiff3/c/bc38b46ef5c96b2b7800e1195b3895527bceea65
+
+--- src/pdiff.cpp.orig 2019-05-18 01:01:30.000000000 +0000
++++ src/pdiff.cpp
+@@ -142,6 +142,8 @@ void KDiff3App::mainInit(TotalDiffStatus
+     // so painting must be suppressed
+     if(bGUI) setLockPainting(true);
+ 
++    //ensure merge result window never has stale iterators.
++    if(m_pMergeResultWindow) m_pMergeResultWindow->clearMergeList();
+     m_diff3LineList.clear();
+     m_diff3LineVector.clear();
+ 
+@@ -338,7 +340,7 @@ void KDiff3App::mainInit(TotalDiffStatus
+         oldHeights = m_pMainSplitter->sizes();
+ 
+     initView();
+-    m_pMergeResultWindow->initActions(actionCollection());
++    m_pMergeResultWindow->connectActions();
+ 
+     if(m_pDirectoryMergeSplitter->isVisible())
+     {



Home | Main Index | Thread Index | Old Index