From be5bb8c4bdeaeb168e8e63d4bb9939669d29d3b6 Mon Sep 17 00:00:00 2001 From: Seth Hillbrand Date: Mon, 24 Jan 2022 10:37:54 -0800 Subject: [PATCH] Enforce strictly weak ordering in sheets This ensures that irreflexivity is given in sort ordering. This may have been triggering issues in MacOS when adding sheets Fixes https://gitlab.com/kicad/code/kicad/issues/10557 (cherry picked from commit a1615cce7edbe037c26c9eb416ebd1bd2447ab30) --- eeschema/sch_sheet.cpp | 8 +++++--- eeschema/sch_sheet_path.cpp | 11 ++++++----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/eeschema/sch_sheet.cpp b/eeschema/sch_sheet.cpp index cd64a902f6..e0c60a7275 100644 --- a/eeschema/sch_sheet.cpp +++ b/eeschema/sch_sheet.cpp @@ -22,6 +22,9 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ +#include +#include + #include #include #include @@ -1227,10 +1230,9 @@ int SCH_SHEET::ComparePageNum( const wxString& aPageNumberA, const wxString& aPa // If not numeric, then sort as strings using natural sort int result = StrNumCmp( aPageNumberA, aPageNumberB ); - if( result > 0 ) - return 1; // A > B + result = result / std::abs( result ); - return -1; //A < B + return result; } diff --git a/eeschema/sch_sheet_path.cpp b/eeschema/sch_sheet_path.cpp index 275c8213a8..6ef34621a1 100644 --- a/eeschema/sch_sheet_path.cpp +++ b/eeschema/sch_sheet_path.cpp @@ -175,12 +175,13 @@ int SCH_SHEET_PATH::ComparePageNum( const SCH_SHEET_PATH& aSheetPathToTest ) con int virtualPageA = GetVirtualPageNumber(); int virtualPageB = aSheetPathToTest.GetVirtualPageNumber(); - return virtualPageA > virtualPageB ? 1 : -1; - } - else - { - return pageNumComp; + if( virtualPageA > virtualPageB ) + pageNumComp = 1; + else if( virtualPageA < virtualPageB ) + pageNumComp = -1; } + + return pageNumComp; }