vcl/source/outdev/map.cxx | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-)
New commits: commit e52de1ca778d76a60579a656f61013b0dec1fdba Author: Juan Picca <[email protected]> Date: Tue Nov 4 00:18:02 2014 -0200 Fraction: rewrite condition 'GetDenominator()==-1' Change-Id: I483024fd0ef3e4e187a143631b2e8bd953fa3a52 Reviewed-on: https://gerrit.libreoffice.org/12240 Reviewed-by: Julien Nabet <[email protected]> Reviewed-by: David Tardon <[email protected]> Tested-by: David Tardon <[email protected]> diff --git a/vcl/source/outdev/map.cxx b/vcl/source/outdev/map.cxx index fa79b77..b9bd532 100644 --- a/vcl/source/outdev/map.cxx +++ b/vcl/source/outdev/map.cxx @@ -45,6 +45,12 @@ ctor fraction once); we could also do this with BigInts static Fraction ImplMakeFraction( long nN1, long nN2, long nD1, long nD2 ) { + if( nD1 == 0 || nD2 == 0 ) //under these bad circumstances the following while loop will be endless + { + DBG_ASSERT(false,"Invalid parameter for ImplMakeFraction"); + return Fraction( 1, 1 ); + } + long i = 1; if ( nN1 < 0 ) { i = -i; nN1 = -nN1; } @@ -53,17 +59,9 @@ static Fraction ImplMakeFraction( long nN1, long nN2, long nD1, long nD2 ) if ( nD2 < 0 ) { i = -i; nD2 = -nD2; } // all positive; i sign - Fraction aF( i*nN1, nD1 ); - aF *= Fraction( nN2, nD2 ); + Fraction aF = Fraction( i*nN1, nD1 ) * Fraction( nN2, nD2 ); - if( nD1 == 0 || nD2 == 0 ) //under these bad circumstances the following while loop will be endless - { - DBG_ASSERT(false,"Invalid parameter for ImplMakeFraction"); - return Fraction( 1, 1 ); - } - - while ( aF.GetDenominator() == -1 ) - { + while ( !aF.IsValid() ) { if ( nN1 > nN2 ) nN1 = (nN1 + 1) / 2; else @@ -73,8 +71,7 @@ static Fraction ImplMakeFraction( long nN1, long nN2, long nD1, long nD2 ) else nD2 = (nD2 + 1) / 2; - aF = Fraction( i*nN1, nD1 ); - aF *= Fraction( nN2, nD2 ); + aF = Fraction( i*nN1, nD1 ) * Fraction( nN2, nD2 ); } return aF; _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
