Received: by mail.netbsd.org (Postfix, from userid 605) id 336D184D84; Thu, 16 Jan 2020 02:37:32 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mail.netbsd.org (Postfix) with ESMTP id AF7E284D62 for ; Thu, 16 Jan 2020 02:37:31 +0000 (UTC) X-Virus-Scanned: amavisd-new at netbsd.org Received: from mail.netbsd.org ([127.0.0.1]) by localhost (mail.netbsd.org [127.0.0.1]) (amavisd-new, port 10025) with ESMTP id VuZg5Yf9osz9 for ; Thu, 16 Jan 2020 02:37:30 +0000 (UTC) Received: from cvs.NetBSD.org (ivanova.netbsd.org [199.233.217.197]) by mail.netbsd.org (Postfix) with ESMTP id 79EF784D56 for ; Thu, 16 Jan 2020 02:37:30 +0000 (UTC) Received: by cvs.NetBSD.org (Postfix, from userid 500) id 7345CFBF4; Thu, 16 Jan 2020 02:37:30 +0000 (UTC) Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_157914225077530" MIME-Version: 1.0 Date: Thu, 16 Jan 2020 02:37:30 +0000 From: "David H. Gutteridge" Subject: CVS commit: pkgsrc/devel/kdiff3 To: pkgsrc-changes@NetBSD.org Reply-To: gutteridge@netbsd.org X-Mailer: log_accum Message-Id: <20200116023730.7345CFBF4@cvs.NetBSD.org> Sender: pkgsrc-changes-owner@NetBSD.org List-Id: pkgsrc-changes.NetBSD.org Precedence: bulk List-Unsubscribe: This is a multi-part message in MIME format. --_----------=_157914225077530 Content-Disposition: inline Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII" 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. --_----------=_157914225077530 Content-Disposition: inline Content-Length: 18774 Content-Transfer-Encoding: binary Content-Type: text/x-diff; charset=us-ascii 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 ++ inline typename std::enable_if::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 ++ inline typename std::enable_if::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 ++ T* createAction( ++ const QString& text, ++ const QKeySequence& shortcut, ++ KActionCollection* ac, ++ const QString &actionName) ++ { ++ T* theAction = createAction( text, ac, actionName ); ++ ac->setDefaultShortcut(theAction, shortcut); ++ return theAction; ++ } ++ template ++ T* createAction( ++ const QString& text, ++ const QIcon& icon, ++ KActionCollection* ac, ++ const QString &actionName) ++ { ++ T* theAction = createAction( text, ac, actionName ); ++ theAction->setIcon( icon ); ++ return theAction; ++ } ++ template ++ T* createAction( ++ const QString& text, ++ const QIcon& icon, ++ const QString& iconText, ++ KActionCollection* ac, ++ const QString &actionName) ++ { ++ T* theAction = createAction( text, ac, actionName ); ++ theAction->setIcon( icon ); ++ theAction->setIconText( iconText ); ++ return theAction; ++ } ++ template ++ T* createAction( ++ const QString& text, ++ const QIcon& icon, ++ const QKeySequence& shortcut, ++ KActionCollection* ac, ++ const QString &actionName) ++ { ++ T* theAction = createAction( text, shortcut, ac, actionName ); ++ theAction->setIcon( icon ); ++ return theAction; ++ } ++ template ++ T* createAction( ++ const QString& text, ++ const QIcon& icon, ++ const QString& iconText, ++ const QKeySequence& shortcut, ++ KActionCollection* ac, ++ const QString &actionName) ++ { ++ T* theAction = createAction( 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(i18n("Choose A Everywhere"), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_1), this, &MergeResultWindow::slotChooseAEverywhere, ac, "merge_choose_a_everywhere"); +- chooseBEverywhere = GuiUtils::createAction(i18n("Choose B Everywhere"), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_2), this, &MergeResultWindow::slotChooseBEverywhere, ac, "merge_choose_b_everywhere"); +- chooseCEverywhere = GuiUtils::createAction(i18n("Choose C Everywhere"), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_3), this, &MergeResultWindow::slotChooseCEverywhere, ac, "merge_choose_c_everywhere"); +- chooseAForUnsolvedConflicts = GuiUtils::createAction(i18n("Choose A for All Unsolved Conflicts"), this, &MergeResultWindow::slotChooseAForUnsolvedConflicts, ac, "merge_choose_a_for_unsolved_conflicts"); +- chooseBForUnsolvedConflicts = GuiUtils::createAction(i18n("Choose B for All Unsolved Conflicts"), this, &MergeResultWindow::slotChooseBForUnsolvedConflicts, ac, "merge_choose_b_for_unsolved_conflicts"); +- chooseCForUnsolvedConflicts = GuiUtils::createAction(i18n("Choose C for All Unsolved Conflicts"), this, &MergeResultWindow::slotChooseCForUnsolvedConflicts, ac, "merge_choose_c_for_unsolved_conflicts"); +- chooseAForUnsolvedWhiteSpaceConflicts = GuiUtils::createAction(i18n("Choose A for All Unsolved Whitespace Conflicts"), this, &MergeResultWindow::slotChooseAForUnsolvedWhiteSpaceConflicts, ac, "merge_choose_a_for_unsolved_whitespace_conflicts"); +- chooseBForUnsolvedWhiteSpaceConflicts = GuiUtils::createAction(i18n("Choose B for All Unsolved Whitespace Conflicts"), this, &MergeResultWindow::slotChooseBForUnsolvedWhiteSpaceConflicts, ac, "merge_choose_b_for_unsolved_whitespace_conflicts"); +- chooseCForUnsolvedWhiteSpaceConflicts = GuiUtils::createAction(i18n("Choose C for All Unsolved Whitespace Conflicts"), this, &MergeResultWindow::slotChooseCForUnsolvedWhiteSpaceConflicts, ac, "merge_choose_c_for_unsolved_whitespace_conflicts"); ++ chooseAEverywhere = GuiUtils::createAction(i18n("Choose A Everywhere"), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_1), ac, "merge_choose_a_everywhere"); ++ chooseBEverywhere = GuiUtils::createAction(i18n("Choose B Everywhere"), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_2), ac, "merge_choose_b_everywhere"); ++ chooseCEverywhere = GuiUtils::createAction(i18n("Choose C Everywhere"), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_3), ac, "merge_choose_c_everywhere"); ++ chooseAForUnsolvedConflicts = GuiUtils::createAction(i18n("Choose A for All Unsolved Conflicts"), ac, "merge_choose_a_for_unsolved_conflicts"); ++ chooseBForUnsolvedConflicts = GuiUtils::createAction(i18n("Choose B for All Unsolved Conflicts"), ac, "merge_choose_b_for_unsolved_conflicts"); ++ chooseCForUnsolvedConflicts = GuiUtils::createAction(i18n("Choose C for All Unsolved Conflicts"), ac, "merge_choose_c_for_unsolved_conflicts"); ++ chooseAForUnsolvedWhiteSpaceConflicts = GuiUtils::createAction(i18n("Choose A for All Unsolved Whitespace Conflicts"), ac, "merge_choose_a_for_unsolved_whitespace_conflicts"); ++ chooseBForUnsolvedWhiteSpaceConflicts = GuiUtils::createAction(i18n("Choose B for All Unsolved Whitespace Conflicts"), ac, "merge_choose_b_for_unsolved_whitespace_conflicts"); ++ chooseCForUnsolvedWhiteSpaceConflicts = GuiUtils::createAction(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()) + { --_----------=_157914225077530--