--- main/sc/source/ui/unoobj/chart2uno.cxx +++ main/sc/source/ui/unoobj/chart2uno.cxx @@ -3026,31 +3026,38 @@ uno::Sequence< double > SAL_CALL ScChart2DataSequence::getNumericalData() } else { - sal_Int32 nMax = 0, nMin = 0, nMaxStep = 0, nMinStep = 0; - for (sal_Int32 j = 0; j < nStep; j++) + double fMaxVal = fNAN, fMinVal = fNAN; + int nMaxStep = -1, nMinStep = -1; + for( sal_Int32 j = 0; j < nStep; ++j, ++itr) { - sal_Int32 nValue = itr->mbIsValue ? itr->mfValue : fNAN; - if (nValue > nMax) + if( !itr->mbIsValue ) + continue; + const double fValue = itr->mfValue; + if( nMaxStep < 0 ) + { + nMaxStep = nMinStep = j; + fMaxVal = fMinVal = fValue; + } + else if( fMaxVal < fValue ) { - nMax = nValue; + fMaxVal = fValue; nMaxStep = j; } - if (nValue < nMin) + else if( fMinVal > fValue ) { - nMin = nValue; + fMinVal = fValue; nMinStep = j; } - itr++; } if (nMaxStep > nMinStep) { - *pArr++ = nMin; - *pArr++ = nMax; + *(pArr++) = fMinVal; + *(pArr++) = fMaxVal; } else { - *pArr++ = nMax; - *pArr++ = nMin; + *(pArr++) = fMaxVal; + *(pArr++) = fMinVal; } } }