sc/source/core/tool/interpr2.cxx |   22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

New commits:
commit 3bf31803959ccc54bb949630f936a768ef47a90b
Author: Winfried Donkers <winfrieddonk...@libreoffice.org>
Date:   Fri Sep 9 13:18:42 2016 +0200

    tdf#101541 function WORKDAY.INTL not working properly
    
    When holidays are adjacent to weekend days, wrong results occurred.
    
    Change-Id: I9ec86e00f1a62ea941ff70617a1b448601aff9cc
    Reviewed-on: https://gerrit.libreoffice.org/28771
    Reviewed-by: Eike Rathke <er...@redhat.com>
    Tested-by: Eike Rathke <er...@redhat.com>
    (cherry picked from commit 5e9d5eeb8a33fdcc500377d9eace40b5f5a7f750)
    Reviewed-on: https://gerrit.libreoffice.org/28970
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/28973

diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx
index bd255fc..d287718 100644
--- a/sc/source/core/tool/interpr2.cxx
+++ b/sc/source/core/tool/interpr2.cxx
@@ -513,14 +513,16 @@ void ScInterpreter::ScWorkday_MS()
                     size_t nRef = 0;
                     while ( nDays )
                     {
-                        while ( nRef < nMax && nSortArray.at( nRef ) < nDate )
-                            nRef++;
-                        if ( !( nRef < nMax && nSortArray.at( nRef ) == nDate 
) || nRef >= nMax )
-                             nDays--;
-
                         do
+                        {
                             ++nDate;
+                        }
                         while ( bWeekendMask[ GetDayOfWeek( nDate ) ] ); 
//jump over weekend day(s)
+
+                        while ( nRef < nMax && nSortArray.at( nRef ) < nDate )
+                            nRef++;
+                        if ( !( nRef < nMax && nSortArray.at( nRef ) == nDate 
) || nRef >= nMax )
+                            nDays--;
                     }
                 }
                 else
@@ -528,14 +530,16 @@ void ScInterpreter::ScWorkday_MS()
                     sal_Int16 nRef = nMax - 1;
                     while ( nDays )
                     {
+                        do
+                        {
+                          --nDate;
+                        }
+                        while ( bWeekendMask[ GetDayOfWeek( nDate ) ] ); 
//jump over weekend day(s)
+
                         while ( nRef >= 0 && nSortArray.at( nRef ) > nDate )
                             nRef--;
                         if ( !( nRef >= 0 && nSortArray.at( nRef ) == nDate ) 
|| nRef < 0 )
                              nDays++;
-
-                        do
-                          --nDate;
-                        while ( bWeekendMask[ GetDayOfWeek( nDate ) ] ); 
//jump over weekend day(s)
                     }
                 }
                 PushDouble( ( double ) ( nDate - nNullDate ) );
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to