diff options
author | Derick Rethans <github@derickrethans.nl> | 2014-12-08 11:07:00 +0000 |
---|---|---|
committer | Derick Rethans <github@derickrethans.nl> | 2014-12-08 11:07:00 +0000 |
commit | eb6fb71e55f2560eb622cf0a2c872a5a2b7879df (patch) | |
tree | 816a8dbb6b16f0ebae4e849139d346045172afa4 /ext | |
parent | 70a2748b5ea2cdb26f67fbe1d2b365d42b57af07 (diff) | |
parent | 9d4f4483cb3558bd3657af1c0c5123f77cc0698a (diff) | |
download | php-git-eb6fb71e55f2560eb622cf0a2c872a5a2b7879df.tar.gz |
Merge branch 'PHP-5.6'
Diffstat (limited to 'ext')
-rw-r--r-- | ext/date/lib/dow.c | 18 | ||||
-rw-r--r-- | ext/date/tests/DateTime_setISODate_variation1.phpt | 4 | ||||
-rw-r--r-- | ext/date/tests/bug49585.phpt | 5 | ||||
-rw-r--r-- | ext/date/tests/date_isodate_set_variation2.phpt | 4 | ||||
-rw-r--r-- | ext/date/tests/getdate_variation7.phpt | 4 | ||||
-rw-r--r-- | ext/date/tests/localtime_variation3.phpt | 4 |
6 files changed, 26 insertions, 13 deletions
diff --git a/ext/date/lib/dow.c b/ext/date/lib/dow.c index 1739566728..4438b723d2 100644 --- a/ext/date/lib/dow.c +++ b/ext/date/lib/dow.c @@ -23,9 +23,21 @@ static int m_table_common[13] = { -1, 0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5 }; /* 1 = jan */ static int m_table_leap[13] = { -1, 6, 2, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5 }; /* 1 = jan */ +static timelib_sll positive_mod(timelib_sll x, timelib_sll y) +{ + timelib_sll tmp; + + tmp = x % y; + if (tmp < 0) { + tmp += y; + } + + return tmp; +} + static timelib_sll century_value(timelib_sll j) { - return 6 - (j % 4) * 2; + return 6 - positive_mod(j, 4) * 2; } static timelib_sll timelib_day_of_week_ex(timelib_sll y, timelib_sll m, timelib_sll d, int iso) @@ -36,9 +48,9 @@ static timelib_sll timelib_day_of_week_ex(timelib_sll y, timelib_sll m, timelib_ * Julian calendar. We just return the 'wrong' day of week to be * consistent. */ c1 = century_value(y / 100); - y1 = (y % 100); + y1 = positive_mod(y, 100); m1 = timelib_is_leap(y) ? m_table_leap[m] : m_table_common[m]; - dow = (c1 + y1 + m1 + (y1 / 4) + d) % 7; + dow = positive_mod((c1 + y1 + m1 + (y1 / 4) + d), 7); if (iso) { if (dow == 0) { dow = 7; diff --git a/ext/date/tests/DateTime_setISODate_variation1.phpt b/ext/date/tests/DateTime_setISODate_variation1.phpt index d685f27ed0..a4e8865e73 100644 --- a/ext/date/tests/DateTime_setISODate_variation1.phpt +++ b/ext/date/tests/DateTime_setISODate_variation1.phpt @@ -145,7 +145,7 @@ object(DateTime)#%d (3) { -- int -12345 -- object(DateTime)#%d (3) { ["date"]=> - string(28) "-12345-02-15 08:34:10.000000" + string(28) "-12345-02-11 08:34:10.000000" ["timezone_type"]=> int(3) ["timezone"]=> @@ -165,7 +165,7 @@ object(DateTime)#%d (3) { -- float -10.5 -- object(DateTime)#%d (3) { ["date"]=> - string(27) "-0010-02-19 08:34:10.000000" + string(27) "-0010-02-14 08:34:10.000000" ["timezone_type"]=> int(3) ["timezone"]=> diff --git a/ext/date/tests/bug49585.phpt b/ext/date/tests/bug49585.phpt index 2ec14245ea..d21bba6c5c 100644 --- a/ext/date/tests/bug49585.phpt +++ b/ext/date/tests/bug49585.phpt @@ -10,7 +10,8 @@ var_dump($date->format('r')); $date->setDate(-2147483648, 1, 1); var_dump($date->format('r')); var_dump($date->format('c')); +?> --EXPECT-- -string(32) "Sat, 01 Jan -1500 00:00:00 +0000" -string(42) "Unknown, 01 Jan -2147483648 00:00:00 +0000" +string(32) "Fri, 01 Jan -1500 00:00:00 +0000" +string(38) "Mon, 01 Jan -2147483648 00:00:00 +0000" string(32) "-2147483648-01-01T00:00:00+00:00" diff --git a/ext/date/tests/date_isodate_set_variation2.phpt b/ext/date/tests/date_isodate_set_variation2.phpt index 5b59a696c6..3c3b6924bb 100644 --- a/ext/date/tests/date_isodate_set_variation2.phpt +++ b/ext/date/tests/date_isodate_set_variation2.phpt @@ -145,7 +145,7 @@ object(DateTime)#%d (3) { -- int -12345 -- object(DateTime)#%d (3) { ["date"]=> - string(28) "-12345-02-15 08:34:10.000000" + string(28) "-12345-02-11 08:34:10.000000" ["timezone_type"]=> int(3) ["timezone"]=> @@ -165,7 +165,7 @@ object(DateTime)#%d (3) { -- float -10.5 -- object(DateTime)#%d (3) { ["date"]=> - string(27) "-0010-02-19 08:34:10.000000" + string(27) "-0010-02-14 08:34:10.000000" ["timezone_type"]=> int(3) ["timezone"]=> diff --git a/ext/date/tests/getdate_variation7.phpt b/ext/date/tests/getdate_variation7.phpt index 5af2dd53fc..2088fa1792 100644 --- a/ext/date/tests/getdate_variation7.phpt +++ b/ext/date/tests/getdate_variation7.phpt @@ -61,7 +61,7 @@ array\(11\) { \["mday"\]=> int\((9|14|23)\) \["wday"\]=> - int\((6|-4)\) + int\(0\) \["mon"\]=> int\((10|12)\) \["year"\]=> @@ -69,7 +69,7 @@ array\(11\) { \["yday"\]=> int\((282|347|295)\) \["weekday"\]=> - string\((8|7)\) "(Saturday|Unknown)" + string\(6\) "Sunday" \["month"\]=> string\((7|8)\) "(October|December)" \[0\]=> diff --git a/ext/date/tests/localtime_variation3.phpt b/ext/date/tests/localtime_variation3.phpt index d941e3891e..34d8f57f01 100644 --- a/ext/date/tests/localtime_variation3.phpt +++ b/ext/date/tests/localtime_variation3.phpt @@ -87,7 +87,7 @@ array\(9\) { \[5\]=> int\((104|1|-3843)\) \[6\]=> - int\((5|-5)\) + int\(6\) \[7\]=> int\((281|346|294)\) \[8\]=> @@ -107,7 +107,7 @@ array\(9\) { \["tm_year"\]=> int\((104|1|-3843)\) \["tm_wday"\]=> - int\((5|-5)\) + int\(6\) \["tm_yday"\]=> int\((281|346|294)\) \["tm_isdst"\]=> |