From 10f2fab3d2219001c5e07a80d2c46bbc9f15ea71 Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Fri, 19 Dec 2008 16:21:34 +0000 Subject: [PATCH] fixed broken version comparing which indicated 0.x.y to be less than 0.x.y-patch - fixes messed up projects when loading files created with LMMS 0.4.0 git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/branches/lmms/stable-0.4@1961 0778d3d1-df1d-0410-868b-ea421aaaa00d --- include/project_version.h | 2 +- src/core/project_version.cpp | 23 ++++++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/include/project_version.h b/include/project_version.h index b6721db25..575d1a64e 100644 --- a/include/project_version.h +++ b/include/project_version.h @@ -47,7 +47,7 @@ public: inline bool operator<( const projectVersion & _v1, const char * _str ) { - return( projectVersion::compare( _v1, projectVersion( _str ) ) < 0 ); + return projectVersion::compare( _v1, projectVersion( _str ) ) < 0; } diff --git a/src/core/project_version.cpp b/src/core/project_version.cpp index 5577db70e..75f631254 100644 --- a/src/core/project_version.cpp +++ b/src/core/project_version.cpp @@ -4,6 +4,7 @@ * project_version.cpp - compare versions in import upgrades * * Copyright (c) 2007 Javier Serrano Polo + * Copyright (c) 2008 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -42,7 +43,7 @@ int projectVersion::compare( const projectVersion & _v1, n2 = _v2.section( '.', 0, 0 ).toInt(); if( n1 != n2 ) { - return( n1 - n2 ); + return n1 - n2; } // Minor @@ -50,7 +51,7 @@ int projectVersion::compare( const projectVersion & _v1, n2 = _v2.section( '.', 1, 1 ).toInt(); if( n1 != n2 ) { - return( n1 - n2 ); + return n1 - n2; } // Release @@ -58,12 +59,24 @@ int projectVersion::compare( const projectVersion & _v1, n2 = _v2.section( '.', 2 ).section( '-', 0, 0 ).toInt(); if( n1 != n2 ) { - return( n1 - n2 ); + return n1 - n2; } // Build - return( QString::compare( _v1.section( '.', 2 ).section( '-', 1 ), - _v2.section( '.', 2 ).section( '-', 1 ) ) ); + const QString b1 = _v1.section( '.', 2 ).section( '-', 1 ); + const QString b2 = _v2.section( '.', 2 ).section( '-', 1 ); + + // make sure 0.x.y > 0.x.y-patch + if( b1.isEmpty() ) + { + return 1; + } + if( b2.isEmpty() ) + { + return -1; + } + + return QString::compare( b1, b2 ); }