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 ); }