Author: pescetti
Date: Fri Sep 25 23:01:03 2015
New Revision: 1705378

URL: http://svn.apache.org/viewvc?rev=1705378&view=rev
Log:
#i117989# Basic functions Day(), Hour(), Minute(), and Second() return wrong 
results for dates <1900-1-1
Patch by: Damjan Jovanovic <[email protected]>

Modified:
    openoffice/branches/AOO410/main/   (props changed)
    openoffice/branches/AOO410/main/basic/source/runtime/methods.cxx

Propchange: openoffice/branches/AOO410/main/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Sep 25 23:01:03 2015
@@ -2,4 +2,4 @@
 /openoffice/branches/ia2/main:1417739-1541842
 
/openoffice/branches/ooxml-osba/main:1546391,1546395,1546574,1546934,1547030,1547392,1551920,1551954,1551958,1552283
 
/openoffice/branches/rejuvenate01/main:1480411,1534063,1534098,1536312,1549902,1560617
-/openoffice/trunk/main:1571617,1571677,1572569,1572577,1573547,1574058,1574101,1575922,1576216,1576748,1578786,1579934,1580657,1580779,1581746,1581840,1582359,1582365,1582709,1583336,1583418,1583589,1583988,1585261,1586242,1586249,1586583,1587468,1589050,1591501,1592692,1592716,1594206,1595847,1595851,1595858,1596218,1596491,1596494,1597076,1597102,1597109,1599169,1599173-1599174,1600581,1600587,1600590,1600630,1600861,1600863,1600883,1602434,1602791,1602823,1602850,1603416,1603897,1603941,1604028,1604709,1604786,1605044,1605355,1605689,1606055,1606061,1606706,1607111,1607793,1607836,1608348,1608376,1608730,1608733,1609204,1609208,1609302,1609426,1610347,1610411,1610422,1610671,1611470,1611549,1612070-1612071,1612539,1612801,1616457,1616944,1621121,1623847,1623849-1623850,1633294,1633297,1635806,1642300-1642302,1654282,1669457,1669459,1669462-1669463,1669465,1677190,1687177,1689883,1689959,1692551,1694132,1694701,1695962,1700078,1700135,1702894,1702898,1702986,1702988,1705193,170519
 6,1705199,1705276,1705364,1705368
+/openoffice/trunk/main:1571617,1571677,1572569,1572577,1573547,1574058,1574101,1575922,1576216,1576748,1578786,1579934,1580657,1580779,1581746,1581840,1582359,1582365,1582709,1583336,1583418,1583589,1583988,1585261,1586242,1586249,1586583,1587468,1589050,1591501,1592692,1592716,1594206,1595847,1595851,1595858,1596218,1596491,1596494,1597076,1597102,1597109,1599169,1599173-1599174,1600581,1600587,1600590,1600630,1600861,1600863,1600883,1602434,1602791,1602823,1602850,1603416,1603897,1603941,1604028,1604709,1604786,1605044,1605355,1605689,1606055,1606061,1606706,1607111,1607793,1607836,1608348,1608376,1608730,1608733,1609204,1609208,1609302,1609426,1610347,1610411,1610422,1610671,1611470,1611549,1612070-1612071,1612539,1612801,1616457,1616944,1621121,1623847,1623849-1623850,1633294,1633297,1635806,1642300-1642302,1654282,1669457,1669459,1669462-1669463,1669465,1677190,1687177,1689883,1689959,1692551,1694132,1694701,1695962,1697807,1700078,1700135,1702894,1702898,1702986,1702988,170519
 3,1705196,1705199,1705276,1705364,1705368

Modified: openoffice/branches/AOO410/main/basic/source/runtime/methods.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/basic/source/runtime/methods.cxx?rev=1705378&r1=1705377&r2=1705378&view=diff
==============================================================================
--- openoffice/branches/AOO410/main/basic/source/runtime/methods.cxx (original)
+++ openoffice/branches/AOO410/main/basic/source/runtime/methods.cxx Fri Sep 25 
23:01:03 2015
@@ -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);


Reply via email to