[Libreoffice-commits] core.git: Branch 'aoo/trunk' - basic/source

Damjan Jovanovic damjan at apache.org
Tue Aug 25 21:08:33 PDT 2015


 basic/source/runtime/methods.cxx |   18 ++----------------
 1 file changed, 2 insertions(+), 16 deletions(-)

New commits:
commit a68493266e9212119f31e58c256f00fb9bcc8d20
Author: Damjan Jovanovic <damjan at apache.org>
Date:   Wed Aug 26 02:10:46 2015 +0000

    #i117989# Basic functions Day(), Hour(), Minute(), and Second() return wrong results for dates <1900-1-1
    
    Also extended our spreadsheeet test to search through more columns, open spreadsheets
    with macros enabled, and added a test for the the Year(), Month(), Day(), Hour(),
    Minute(), and Second() functions comparing Calc's formulas vs StarBasic's runtime functions.
    
    Found-by: villeroy
    Patch-by: Damjan Jovanovic

diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx
index 88e1aca..6d5b036 100644
--- a/basic/source/runtime/methods.cxx
+++ b/basic/source/runtime/methods.cxx
@@ -1789,17 +1789,9 @@ RTLFUNC(Val)
 sal_Int16 implGetDateDay( double aDate )
 {
     aDate -= 2.0; // normieren: 1.1.1900 => 0.0
+    aDate = floor( aDate );
     Date aRefDate( 1, 1, 1900 );
-    if ( aDate >= 0.0 )
-    {
-        aDate = floor( aDate );
-        aRefDate += (sal_uIntPtr)aDate;
-    }
-    else
-    {
-        aDate = ceil( aDate );
-        aRefDate -= (sal_uIntPtr)(-1.0 * aDate);
-    }
+    aRefDate += (sal_uIntPtr)aDate;
 
     sal_Int16 nRet = (sal_Int16)( aRefDate.GetDay() );
     return nRet;
@@ -2110,8 +2102,6 @@ RTLFUNC(Year)
 
 sal_Int16 implGetHour( double dDate )
 {
-    if( dDate < 0.0 )
-        dDate *= -1.0;
     double nFrac = dDate - floor( dDate );
     nFrac *= 86400.0;
     sal_Int32 nSeconds = (sal_Int32)(nFrac + 0.5);
@@ -2136,8 +2126,6 @@ RTLFUNC(Hour)
 
 sal_Int16 implGetMinute( double dDate )
 {
-    if( dDate < 0.0 )
-        dDate *= -1.0;
     double nFrac = dDate - floor( dDate );
     nFrac *= 86400.0;
     sal_Int32 nSeconds = (sal_Int32)(nFrac + 0.5);
@@ -2177,8 +2165,6 @@ RTLFUNC(Month)
 
 sal_Int16 implGetSecond( double dDate )
 {
-    if( dDate < 0.0 )
-        dDate *= -1.0;
     double nFrac = dDate - floor( dDate );
     nFrac *= 86400.0;
     sal_Int32 nSeconds = (sal_Int32)(nFrac + 0.5);


More information about the Libreoffice-commits mailing list