strnumpcmp: Use wxstring functions for wxstrings

Fixes: lp:1818157
* https://bugs.launchpad.net/kicad/+bug/1818157
This commit is contained in:
Seth Hillbrand 2019-03-03 19:55:19 -08:00
parent c3928c21eb
commit 8a03025ac9
1 changed files with 11 additions and 10 deletions

View File

@ -314,31 +314,32 @@ int StrNumCmp( const wxString& aString1, const wxString& aString2, bool aIgnoreC
{
int nb1 = 0, nb2 = 0;
wxString::const_iterator str1 = aString1.begin(), str2 = aString2.begin();
auto str1 = aString1.begin();
auto str2 = aString2.begin();
while( str1 != aString1.end() && str2 != aString2.end() )
{
wxUniChar c1 = *str1;
wxUniChar c2 = *str2;
if( isdigit( c1 ) && isdigit( c2 ) ) // Both characters are digits, do numeric compare.
if( wxIsdigit( c1 ) && wxIsdigit( c2 ) ) // Both characters are digits, do numeric compare.
{
nb1 = 0;
nb2 = 0;
do
{
c1 = *(str1);
c1 = *str1;
nb1 = nb1 * 10 + (int) c1 - '0';
++str1;
} while( str1 != aString1.end() && isdigit( *(str1) ) );
} while( str1 != aString1.end() && wxIsdigit( *str1 ) );
do
{
c2 = *(str2);
c2 = *str2;
nb2 = nb2 * 10 + (int) c2 - '0';
++str2;
} while( str2 != aString2.end() && isdigit( *(str2) ) );
} while( str2 != aString2.end() && wxIsdigit( *str2 ) );
if( nb1 < nb2 )
return -1;
@ -346,17 +347,17 @@ int StrNumCmp( const wxString& aString1, const wxString& aString2, bool aIgnoreC
if( nb1 > nb2 )
return 1;
c1 = ( str1 != aString1.end() ) ? *(str1) : (wxUniChar) '\0';
c2 = ( str2 != aString2.end() ) ? *(str2) : (wxUniChar) '\0';
c1 = ( str1 != aString1.end() ) ? *str1 : wxUniChar( 0 );
c2 = ( str2 != aString2.end() ) ? *str2 : wxUniChar( 0 );
}
// Any numerical comparisons to here are identical.
if( aIgnoreCase )
{
if( toupper( c1 ) < toupper( c2 ) )
if( wxToupper( c1 ) < wxToupper( c2 ) )
return -1;
if( toupper( c1 ) > toupper( c2 ) )
if( wxToupper( c1 ) > wxToupper( c2 ) )
return 1;
}
else