mirror of
https://github.com/bdnugget/php-src.git
synced 2026-11-12 03:30:50 +00:00
Compare commits
710
Commits
PHP-7.1.7
...
PHP-7.1.12
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2d16947f20 | ||
|
|
d3c4fef58f | ||
|
|
ba9df1cff6 | ||
|
|
c842e1ac53 | ||
|
|
bc7d4dc523 | ||
|
|
21dbd2ffcd | ||
|
|
91c7460c53 | ||
|
|
c3be49e07d | ||
|
|
1f736085f1 | ||
|
|
d88ef8d7e1 | ||
|
|
e8af216ce5 | ||
|
|
dbfa0140ae | ||
|
|
ba50b27284 | ||
|
|
f5358c0e23 | ||
|
|
98422cfa3d | ||
|
|
8a3e2a6b14 | ||
|
|
164167f3da | ||
|
|
6eb4daabeb | ||
|
|
68c500421c | ||
|
|
7c2031bfca | ||
|
|
fc169d2133 | ||
|
|
d8ccffa79a | ||
|
|
e78e839e53 | ||
|
|
528aa540b4 | ||
|
|
548798818b | ||
|
|
55d92413b9 | ||
|
|
5812f7a8d3 | ||
|
|
628a52d365 | ||
|
|
80191eebec | ||
|
|
cd66aad141 | ||
|
|
c1d98588a2 | ||
|
|
d23d4fd61b | ||
|
|
be0758b75a | ||
|
|
37b0ad5537 | ||
|
|
cfa885830a | ||
|
|
5262bd9ea3 | ||
|
|
a308000ff2 | ||
|
|
a2cd2965d7 | ||
|
|
7ea44da104 | ||
|
|
c32e53b641 | ||
|
|
e305e8fb7a | ||
|
|
dfadda3d09 | ||
|
|
7bf2947016 | ||
|
|
6336c4f629 | ||
|
|
a3286a8ee4 | ||
|
|
bba09a53f4 | ||
|
|
c6e8c2bc9f | ||
|
|
591e811a35 | ||
|
|
f361caa5c0 | ||
|
|
bc410c2609 | ||
|
|
d9de0f8683 | ||
|
|
26eb6c5bab | ||
|
|
741efa7807 | ||
|
|
230e505fd8 | ||
|
|
63c0ecc445 | ||
|
|
e6aea3dc78 | ||
|
|
83d51baf83 | ||
|
|
123b1d79eb | ||
|
|
6c90612d13 | ||
|
|
59d413ceb8 | ||
|
|
27856f64c3 | ||
|
|
938f256ed9 | ||
|
|
14be7dcf8e | ||
|
|
51ea2cfbe1 | ||
|
|
005205714b | ||
|
|
15a71fe045 | ||
|
|
36b27f2ba5 | ||
|
|
24b1bb0abd | ||
|
|
211dacd7b5 | ||
|
|
10dc1950f7 | ||
|
|
f0a42d9fe4 | ||
|
|
f6e8ce8121 | ||
|
|
fb1c573a29 | ||
|
|
9eb6f86765 | ||
|
|
503df277ab | ||
|
|
98eee90734 | ||
|
|
d3146889ab | ||
|
|
502cfddf28 | ||
|
|
177cdcf313 | ||
|
|
bc59289b7a | ||
|
|
6b637ac589 | ||
|
|
eaeccc1d99 | ||
|
|
7d3c057bd1 | ||
|
|
3c4c9a23bc | ||
|
|
d2047503cb | ||
|
|
5e9f7f619e | ||
|
|
578ba71b3b | ||
|
|
8ad4de887f | ||
|
|
b6b0289f5e | ||
|
|
e763a1cdc7 | ||
|
|
9d59beb8ba | ||
|
|
0fbb9f343f | ||
|
|
298db6fc92 | ||
|
|
9fbf13a496 | ||
|
|
f600785f65 | ||
|
|
9e47f868d3 | ||
|
|
b53fb886a4 | ||
|
|
6125ce9d33 | ||
|
|
ad7ed6fe21 | ||
|
|
787e3a1ee4 | ||
|
|
9839d3a953 | ||
|
|
67b99b698f | ||
|
|
e19bf29b53 | ||
|
|
45ac5edbd9 | ||
|
|
53fe84bfcc | ||
|
|
68e27b0763 | ||
|
|
9c79de4d62 | ||
|
|
22c487616f | ||
|
|
7bc31238b4 | ||
|
|
8e3260376c | ||
|
|
8ad71bc1d2 | ||
|
|
c05fcc4687 | ||
|
|
0b5825d0e9 | ||
|
|
75d0ba5179 | ||
|
|
fadcfc8149 | ||
|
|
7d06a5c89f | ||
|
|
9138966c67 | ||
|
|
968c8fc0d5 | ||
|
|
37acebcc8c | ||
|
|
4d31ee9043 | ||
|
|
5efbcd1882 | ||
|
|
a7815e63bd | ||
|
|
d37658be6c | ||
|
|
1758525df9 | ||
|
|
9fca585488 | ||
|
|
781521e112 | ||
|
|
a645af4456 | ||
|
|
b07b526b95 | ||
|
|
eca1623f1b | ||
|
|
b2dfcb30eb | ||
|
|
5b497797f2 | ||
|
|
1cb2079d6c | ||
|
|
0a3ea6091c | ||
|
|
9f00e26008 | ||
|
|
c9a14b3aee | ||
|
|
a10ef3d5cc | ||
|
|
58dd892156 | ||
|
|
eead6bf97a | ||
|
|
a2c9ba78dd | ||
|
|
25d40602cb | ||
|
|
f10fd89f99 | ||
|
|
34ed75fab7 | ||
|
|
314bef5d03 | ||
|
|
e986f71527 | ||
|
|
1d781fbdb1 | ||
|
|
5ce28090e0 | ||
|
|
44b3bc847b | ||
|
|
f588a02463 | ||
|
|
0b71ae7a15 | ||
|
|
88ec44dfe3 | ||
|
|
5d85d967bd | ||
|
|
ffa4d48e70 | ||
|
|
f508734e2f | ||
|
|
ede8cee9e6 | ||
|
|
6f395736e2 | ||
|
|
f95063647c | ||
|
|
2198d38cbc | ||
|
|
3d55910f35 | ||
|
|
e02c41fc72 | ||
|
|
7027a1643f | ||
|
|
65d4bd0311 | ||
|
|
ae6d877f54 | ||
|
|
2f444640b4 | ||
|
|
7240d99838 | ||
|
|
e2afa00b4c | ||
|
|
26473523b0 | ||
|
|
877e0b04bc | ||
|
|
7751ae59ae | ||
|
|
9071ff5c87 | ||
|
|
8eee20d876 | ||
|
|
80c3b078b8 | ||
|
|
85c243ef66 | ||
|
|
aa143515d6 | ||
|
|
bb1814b5c3 | ||
|
|
925d969f9e | ||
|
|
4e85dd0346 | ||
|
|
3c2b087b3e | ||
|
|
5f7707cc8a | ||
|
|
53d8775015 | ||
|
|
d82805f097 | ||
|
|
b9b06c4bdf | ||
|
|
9891f11f84 | ||
|
|
d1f43b1a58 | ||
|
|
f955cff54c | ||
|
|
aad4544e95 | ||
|
|
c3177f8279 | ||
|
|
7778106f40 | ||
|
|
c33ca443ee | ||
|
|
8bfe748fb0 | ||
|
|
200d526a9c | ||
|
|
547fee9cd4 | ||
|
|
999fe36d40 | ||
|
|
5e2751e7ff | ||
|
|
5acb8381b2 | ||
|
|
fd993b1045 | ||
|
|
fb09021432 | ||
|
|
b9b2ae703c | ||
|
|
49702ad7fb | ||
|
|
816758eda2 | ||
|
|
bf1c1d07db | ||
|
|
397f5cb687 | ||
|
|
f8ff4c4918 | ||
|
|
a55af1e271 | ||
|
|
677cd85cb7 | ||
|
|
23e97b0222 | ||
|
|
f63a0fef6b | ||
|
|
d432bdb4ab | ||
|
|
d3d23e0cb8 | ||
|
|
787bf7eaf7 | ||
|
|
62098a10aa | ||
|
|
b497b6edf9 | ||
|
|
c2bfdf3712 | ||
|
|
fee21a45df | ||
|
|
c8eccf8451 | ||
|
|
30f121f9bc | ||
|
|
d1fc9b425f | ||
|
|
c8732b1c5f | ||
|
|
51658bac35 | ||
|
|
d8881f4eb4 | ||
|
|
f48abfa902 | ||
|
|
dc3b9fe619 | ||
|
|
ac1fd769ad | ||
|
|
843e492c68 | ||
|
|
0f55138533 | ||
|
|
ec3d864784 | ||
|
|
d34c8fa802 | ||
|
|
6b9ccda936 | ||
|
|
74124de048 | ||
|
|
b6e34eaf04 | ||
|
|
c935b832dc | ||
|
|
1195de87ff | ||
|
|
ee50fcfa27 | ||
|
|
24e595bf26 | ||
|
|
d0cda9d0bd | ||
|
|
e995b7e475 | ||
|
|
1322c2c86a | ||
|
|
6d1dd8b0af | ||
|
|
2019b25daa | ||
|
|
7b248a1b32 | ||
|
|
4d69587035 | ||
|
|
c8dea7ae1e | ||
|
|
03aef5f65c | ||
|
|
fa78afa112 | ||
|
|
9d9873b3b5 | ||
|
|
4372293192 | ||
|
|
abefb6dfe7 | ||
|
|
9fd33c1f20 | ||
|
|
b5bc88c64e | ||
|
|
db9778dfb2 | ||
|
|
d11fceab15 | ||
|
|
72c008f945 | ||
|
|
1c68d63f35 | ||
|
|
1981c48e60 | ||
|
|
29e673f8ed | ||
|
|
af71942da2 | ||
|
|
6d0391b1a4 | ||
|
|
2dd77456fe | ||
|
|
a680d701ce | ||
|
|
0217a81722 | ||
|
|
3752d18ffe | ||
|
|
550595c085 | ||
|
|
d526ddec85 | ||
|
|
634f79d8d8 | ||
|
|
e8c200515a | ||
|
|
b05ff14a9a | ||
|
|
db63367871 | ||
|
|
628c257f71 | ||
|
|
73d6456d7d | ||
|
|
96323d1bd7 | ||
|
|
da2f581833 | ||
|
|
b71023e297 | ||
|
|
418f97443a | ||
|
|
0c0b955d5f | ||
|
|
9a01fe712a | ||
|
|
eedc060c92 | ||
|
|
5c59dd0047 | ||
|
|
9641586efa | ||
|
|
e3e3d37fa9 | ||
|
|
7670590efd | ||
|
|
351f98f5f3 | ||
|
|
7910c1dee9 | ||
|
|
fba792945e | ||
|
|
3d93856c4a | ||
|
|
c24b3eff11 | ||
|
|
d7a10f0e32 | ||
|
|
5f1d553e7e | ||
|
|
83d8ebc991 | ||
|
|
253d49369d | ||
|
|
2874fa8fb0 | ||
|
|
7452fd0263 | ||
|
|
99b1a62d55 | ||
|
|
fcad6a97b8 | ||
|
|
7674b5e574 | ||
|
|
7f01872a24 | ||
|
|
42e15813e2 | ||
|
|
35deb4c88b | ||
|
|
ac6eefcf3d | ||
|
|
3719aaebbf | ||
|
|
3d1cb7e32c | ||
|
|
05c65de082 | ||
|
|
b09497c0e2 | ||
|
|
0cb5a2cb49 | ||
|
|
5cf215536b | ||
|
|
ea21b60dda | ||
|
|
b5c9cd4df6 | ||
|
|
194547f591 | ||
|
|
7015d22116 | ||
|
|
3e11b7fc21 | ||
|
|
afd59b0c80 | ||
|
|
58aa726548 | ||
|
|
87a91aef83 | ||
|
|
9aa6898b9b | ||
|
|
88c7556d99 | ||
|
|
d103802003 | ||
|
|
75cb69740e | ||
|
|
04a6bbae6c | ||
|
|
a77eddff96 | ||
|
|
cab41ecb93 | ||
|
|
b5d7663444 | ||
|
|
3549d9184a | ||
|
|
d33194d2aa | ||
|
|
9ca0cd0a1a | ||
|
|
5f9ae45e22 | ||
|
|
c40c0b8111 | ||
|
|
822c13b9ef | ||
|
|
6b2813c3a7 | ||
|
|
b394343a31 | ||
|
|
4b746fce1c | ||
|
|
6602cc0385 | ||
|
|
3fd08a1595 | ||
|
|
afa39038c2 | ||
|
|
44eec946e8 | ||
|
|
a1573d5620 | ||
|
|
0413feb29c | ||
|
|
9369843ee2 | ||
|
|
f18cf46d07 | ||
|
|
0f88a49fd5 | ||
|
|
b2919853f8 | ||
|
|
d724d8c107 | ||
|
|
dea41f3c3a | ||
|
|
0b69ce72b8 | ||
|
|
42549b7844 | ||
|
|
e866e05b0d | ||
|
|
cd9d90f4d4 | ||
|
|
c2e3541cc1 | ||
|
|
b689857d53 | ||
|
|
296d0826da | ||
|
|
24da62d342 | ||
|
|
afad9006c7 | ||
|
|
e20a6b0213 | ||
|
|
db78eff4c9 | ||
|
|
a86df6bcb0 | ||
|
|
965570541b | ||
|
|
6ec494016b | ||
|
|
1f977d2377 | ||
|
|
2e77f5eed3 | ||
|
|
020d3decb3 | ||
|
|
4e9c3e9396 | ||
|
|
bcf50b7261 | ||
|
|
3239f6d679 | ||
|
|
ae364546d6 | ||
|
|
0966f9de41 | ||
|
|
a9ff4d1f5a | ||
|
|
499f5480f1 | ||
|
|
52e854f0ab | ||
|
|
be9edd83c2 | ||
|
|
3641ba4332 | ||
|
|
55db2c31cd | ||
|
|
c449057808 | ||
|
|
b7e96f8e0e | ||
|
|
1b8a71e740 | ||
|
|
441487cd05 | ||
|
|
4bf1a11c07 | ||
|
|
079bc324cd | ||
|
|
158b06cffb | ||
|
|
61538ebadc | ||
|
|
11d3a7869c | ||
|
|
95ef8e96d2 | ||
|
|
3cad07b84f | ||
|
|
97ed208cfd | ||
|
|
71b12940d0 | ||
|
|
5ef63b6f0e | ||
|
|
ba59b6f11b | ||
|
|
de0b816b49 | ||
|
|
acf09c416b | ||
|
|
b28912b0f7 | ||
|
|
a7594cb74f | ||
|
|
4494ad6911 | ||
|
|
065551bc9c | ||
|
|
264271f69e | ||
|
|
e7f4e67155 | ||
|
|
d53d793673 | ||
|
|
5b02d10584 | ||
|
|
7121b8d0a2 | ||
|
|
547f9fd389 | ||
|
|
60a6feed07 | ||
|
|
8af70958fc | ||
|
|
9a72a7c58f | ||
|
|
5d2c303438 | ||
|
|
4dc8f4f9d1 | ||
|
|
7829f9b1d2 | ||
|
|
44209573e3 | ||
|
|
01735f4d9f | ||
|
|
336cfd9980 | ||
|
|
3df753c6ca | ||
|
|
584db6f38f | ||
|
|
bdd56f3107 | ||
|
|
3bc1226804 | ||
|
|
0f3e01f5cc | ||
|
|
49501f8f41 | ||
|
|
3af6201224 | ||
|
|
6275825c68 | ||
|
|
4f8e703854 | ||
|
|
d8c80af71e | ||
|
|
e112d71435 | ||
|
|
2def85688d | ||
|
|
259477826c | ||
|
|
1f3b87dc11 | ||
|
|
ab07265573 | ||
|
|
bd0b0cc8c9 | ||
|
|
71fd58652f | ||
|
|
73d84d4bbd | ||
|
|
4d936c1254 | ||
|
|
f555224743 | ||
|
|
3069ad8dd1 | ||
|
|
207105b1a3 | ||
|
|
f64be0b013 | ||
|
|
de5a5f6fdc | ||
|
|
472b25921e | ||
|
|
4fb7665c09 | ||
|
|
1a23ebc1ff | ||
|
|
e88ab74886 | ||
|
|
b59718bdc4 | ||
|
|
46ecda76ba | ||
|
|
307acb6618 | ||
|
|
b06f8cb58b | ||
|
|
42608a3401 | ||
|
|
afb20f4895 | ||
|
|
315d3910fa | ||
|
|
075986f214 | ||
|
|
86aa1ca990 | ||
|
|
618dcd6520 | ||
|
|
9ebf813ea4 | ||
|
|
4c9fe5a490 | ||
|
|
da966a93ac | ||
|
|
d058e30917 | ||
|
|
aee20e637a | ||
|
|
159e5c1048 | ||
|
|
21c6ba3412 | ||
|
|
9689796c10 | ||
|
|
54e2224df7 | ||
|
|
3e5b8c1e89 | ||
|
|
9ba2cfd33e | ||
|
|
4988e83fe9 | ||
|
|
c2b8066efb | ||
|
|
9871555090 | ||
|
|
9ca1b2a775 | ||
|
|
63607375f5 | ||
|
|
2cc1cbf2f4 | ||
|
|
15abb2b56e | ||
|
|
e78712791d | ||
|
|
1fdc518971 | ||
|
|
b112d09013 | ||
|
|
5f030924c1 | ||
|
|
666cb6c802 | ||
|
|
9c6262f39b | ||
|
|
b2934d2612 | ||
|
|
f0d40286e7 | ||
|
|
cd06b5af09 | ||
|
|
0c0cbb43da | ||
|
|
64e6ddc7f7 | ||
|
|
d9d152b895 | ||
|
|
a8e25fdbf8 | ||
|
|
eab66f9068 | ||
|
|
2d6d1ec55b | ||
|
|
2d96fdd54f | ||
|
|
82e4ad3983 | ||
|
|
74a696d53b | ||
|
|
f213ee5952 | ||
|
|
4d6f808c16 | ||
|
|
c48c638aeb | ||
|
|
e3d25e78eb | ||
|
|
55e7459cea | ||
|
|
b01336814d | ||
|
|
b62fb3aa0c | ||
|
|
34e5d3a87d | ||
|
|
0ddda0dcb7 | ||
|
|
9fcfe52d03 | ||
|
|
efb1be547c | ||
|
|
84a18c4782 | ||
|
|
e36c04ef48 | ||
|
|
80f4297c25 | ||
|
|
c7aa8ba0ee | ||
|
|
4cde48bb73 | ||
|
|
3f9e8e6686 | ||
|
|
3306b3aa60 | ||
|
|
eaf5c7cdd4 | ||
|
|
bd00fe81cc | ||
|
|
bb9ea4e88b | ||
|
|
6b1fbafdf0 | ||
|
|
747f5b23ae | ||
|
|
46a6ae0d45 | ||
|
|
de65a2243f | ||
|
|
3df47c12f7 | ||
|
|
238f837cbc | ||
|
|
3fd7d819b8 | ||
|
|
78ad5e8864 | ||
|
|
69b48f83df | ||
|
|
dbc2ffba82 | ||
|
|
bedd881da6 | ||
|
|
cdf9178c43 | ||
|
|
b44484b912 | ||
|
|
924ff6164e | ||
|
|
2dc81d4a09 | ||
|
|
a769d873f8 | ||
|
|
e2b61eccb9 | ||
|
|
6918a68d9d | ||
|
|
5816ce330c | ||
|
|
23c124ec75 | ||
|
|
642fb44d69 | ||
|
|
c4e11c8ef3 | ||
|
|
f116a88592 | ||
|
|
418da85f15 | ||
|
|
a4e3589966 | ||
|
|
775b4b54d8 | ||
|
|
1229b0f8cb | ||
|
|
c562d44321 | ||
|
|
c068818ff3 | ||
|
|
e0c0007bd2 | ||
|
|
ad12da4908 | ||
|
|
134e713be2 | ||
|
|
bad5d0d6c5 | ||
|
|
4cb1151fff | ||
|
|
e405ff59f9 | ||
|
|
69ec51eb02 | ||
|
|
a8f98fc7f7 | ||
|
|
08177312fb | ||
|
|
256ec5bebb | ||
|
|
3a7b0027f3 | ||
|
|
4b3ed311aa | ||
|
|
9b3c26d4f4 | ||
|
|
e2b240c164 | ||
|
|
84926a0d71 | ||
|
|
95d2908814 | ||
|
|
fa33b065ac | ||
|
|
ce06677069 | ||
|
|
7c21535fb3 | ||
|
|
ecad9a470f | ||
|
|
8ef5a50e2d | ||
|
|
f67a3cc9bd | ||
|
|
a9e8239f45 | ||
|
|
c9fd093127 | ||
|
|
2b36f3d71f | ||
|
|
2cca43b3ab | ||
|
|
4252f14299 | ||
|
|
e5beb4e828 | ||
|
|
8e7c99acf4 | ||
|
|
afc22828ea | ||
|
|
4e9158da76 | ||
|
|
51cdd3dc50 | ||
|
|
6c32d271d2 | ||
|
|
f4323248ec | ||
|
|
657609ebae | ||
|
|
0da10134f2 | ||
|
|
735468a0b8 | ||
|
|
649027b963 | ||
|
|
65d5e025a7 | ||
|
|
4ef9f536ba | ||
|
|
e0282c3b58 | ||
|
|
4d08b9dac0 | ||
|
|
2e82ed9b73 | ||
|
|
0db20a7cb1 | ||
|
|
6cd140fdf8 | ||
|
|
0b5683e480 | ||
|
|
5d15fdc4a4 | ||
|
|
3b60af90fd | ||
|
|
c1504b81d3 | ||
|
|
91aad4bc81 | ||
|
|
2f606dc5e8 | ||
|
|
8b04e89ef0 | ||
|
|
04cc2f6473 | ||
|
|
82acb58d8a | ||
|
|
3da01a9652 | ||
|
|
3bcab31749 | ||
|
|
be531ce9f0 | ||
|
|
b47cff48de | ||
|
|
7360e6a36f | ||
|
|
a797421e98 | ||
|
|
fd08eaa8bc | ||
|
|
de32c9efc8 | ||
|
|
2689917b17 | ||
|
|
ccd0ff3ac4 | ||
|
|
5cf54f6073 | ||
|
|
7938b9ccac | ||
|
|
e89476a870 | ||
|
|
62700f76cb | ||
|
|
02cc492015 | ||
|
|
b5338c0b7d | ||
|
|
b38de96733 | ||
|
|
0fdceb6cd5 | ||
|
|
0d3e6f6add | ||
|
|
5c96a255ea | ||
|
|
5ca02ca494 | ||
|
|
18eb78854c | ||
|
|
700803b70c | ||
|
|
739ecf5430 | ||
|
|
1af5ca0746 | ||
|
|
2928feca46 | ||
|
|
fb140d582c | ||
|
|
af07b76ccf | ||
|
|
390f64701d | ||
|
|
7991a88675 | ||
|
|
489f3a3234 | ||
|
|
aa3fceeaad | ||
|
|
1e3b960ab5 | ||
|
|
8b1559b9f4 | ||
|
|
55b880070c | ||
|
|
703be4f77e | ||
|
|
27a743b82b | ||
|
|
bdf7393ddb | ||
|
|
2693e52113 | ||
|
|
4e68b2c52b | ||
|
|
0ba04f7737 | ||
|
|
54840f9c8f | ||
|
|
f269cdcd4f | ||
|
|
f76a6cd023 | ||
|
|
6b18d956de | ||
|
|
e46d589624 | ||
|
|
0496f5407f | ||
|
|
3a25a56a92 | ||
|
|
0525574913 | ||
|
|
73cabfedf5 | ||
|
|
12107d619b | ||
|
|
f7f4fd4706 | ||
|
|
e8b7698f5e | ||
|
|
2aae60461c | ||
|
|
f8c514ba6b | ||
|
|
8dc4f4dc9e | ||
|
|
5f8380d33e | ||
|
|
89637c6b41 | ||
|
|
1fa8e74d6e | ||
|
|
4b38feabe7 | ||
|
|
41ba98f02d | ||
|
|
a29264eb8c | ||
|
|
396c0f7a76 | ||
|
|
4903f044d3 | ||
|
|
6f78923d1f | ||
|
|
04904333fd | ||
|
|
ce64b82ebb | ||
|
|
2dc24005d9 | ||
|
|
d02f953faf | ||
|
|
9d1575c495 | ||
|
|
d0b7eed0c9 | ||
|
|
667185a264 | ||
|
|
c71b773a62 | ||
|
|
af7bfc71fd | ||
|
|
e3cc15daf2 | ||
|
|
72f7143295 | ||
|
|
e57fce4d00 | ||
|
|
2a1ad88538 | ||
|
|
3f4340a796 | ||
|
|
c8bb64c406 | ||
|
|
f15790ec73 | ||
|
|
08089f014c | ||
|
|
a99c5f28c5 | ||
|
|
4e4f2f9f89 | ||
|
|
751d19f698 | ||
|
|
e938cfc921 | ||
|
|
604827b694 | ||
|
|
44d734254a | ||
|
|
cfee5116dd | ||
|
|
0c4f11ecaa | ||
|
|
653b96347c | ||
|
|
2fddc4a7f1 | ||
|
|
0c707fcb10 | ||
|
|
bda0f4e8dc | ||
|
|
de66e80d75 | ||
|
|
fda0a8b735 | ||
|
|
cd1869bcf2 | ||
|
|
3eecee16d1 | ||
|
|
4e98990f6b | ||
|
|
b714309056 | ||
|
|
5b5a92b8b6 | ||
|
|
4948da178a | ||
|
|
721de5b542 | ||
|
|
4d6100569b | ||
|
|
bd8940a1fe | ||
|
|
b255b97e43 | ||
|
|
b903733762 | ||
|
|
b1301a0686 | ||
|
|
21cbdf6984 | ||
|
|
660250f4da | ||
|
|
c56378b0d5 | ||
|
|
81c2a4b9ba | ||
|
|
ed1f64e083 | ||
|
|
db287b2303 | ||
|
|
c288ed44a2 | ||
|
|
5d666d2a02 | ||
|
|
b3bd379198 | ||
|
|
cda87977a5 | ||
|
|
b4c5f20c46 | ||
|
|
fa3615f14e | ||
|
|
13347e8a7d | ||
|
|
3fbbcf7f93 | ||
|
|
d9feb3c2d0 | ||
|
|
1bdc290017 | ||
|
|
18b6de7a91 | ||
|
|
14c422a32f | ||
|
|
78bec63ad9 | ||
|
|
0f8cf3b849 |
No files matched your search
+1
-2
@@ -18,13 +18,12 @@ clone_depth: 64
|
||||
|
||||
cache:
|
||||
- c:\build-cache
|
||||
- c:\build-cache\sdk -> .appveyor.yml
|
||||
|
||||
environment:
|
||||
PHP_BUILD_CACHE_BASE_DIR: c:\build-cache
|
||||
PHP_BUILD_OBJ_DIR: c:\obj
|
||||
PHP_BUILD_CACHE_SDK_DIR: c:\build-cache\sdk
|
||||
PHP_BUILD_SDK_BRANCH: php-sdk-2.0.5
|
||||
PHP_BUILD_SDK_BRANCH: php-sdk-2.0.12
|
||||
# ext and env setup for tests
|
||||
#MYSQL_TEST_PASSWD: Password12!
|
||||
#MYSQL_TEST_USER: root
|
||||
|
||||
+25
-6
@@ -1,16 +1,35 @@
|
||||
; http://editorconfig.org/
|
||||
# http://editorconfig.org/
|
||||
|
||||
root = true
|
||||
|
||||
[*.{c,h}]
|
||||
charset = UTF-8
|
||||
end_of_line = LF
|
||||
[*.{c,h,awk,w32,bat,mk,frag}]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 4
|
||||
indent_style = tab
|
||||
insert_final_newline = true
|
||||
tab_width = 4
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.yml]
|
||||
[*.{php,phpt}]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.{yml,m4,sh}]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_style = space
|
||||
trim_trailing_whitespace = false
|
||||
insert_final_newline = true
|
||||
@@ -15,11 +15,8 @@ ext/dba/libflatfile/flatfile.c ident
|
||||
ext/dba/libcdb/cdb_make.c ident
|
||||
ext/dba/libcdb/cdb.c ident
|
||||
ext/filter/filter.c ident
|
||||
ext/zip/php_zip.c ident
|
||||
README.input_filter ident
|
||||
run-tests.php ident
|
||||
sapi/nsapi/nsapi.c ident
|
||||
sapi/continuity/capi.c ident
|
||||
Zend/RFCs/002.txt ident
|
||||
Zend/RFCs/003.txt ident
|
||||
ext/exif/exif.c ident
|
||||
@@ -32,7 +29,6 @@ UPGRADING.INTERNALS merge=NEWS
|
||||
/ext/bz2/tests/with_strings.phpt -crlf
|
||||
/ext/dom/tests/bug40836.phpt -crlf
|
||||
/ext/dom/tests/domelement.phpt -crlf
|
||||
/ext/ereg/tests/eregi_basic_002.phpt -crlf
|
||||
/ext/iconv/tests/iconv004.phpt -crlf
|
||||
/ext/iconv/tests/iconv_basic.phpt -crlf
|
||||
/ext/iconv/tests/iconv_strpos.phpt -crlf
|
||||
|
||||
@@ -262,9 +262,7 @@ pear/phpize
|
||||
pear/run-tests
|
||||
pear/php-config
|
||||
pear/scripts
|
||||
sapi/apache/libphp7.module
|
||||
sapi/apache2handler/libphp7.module
|
||||
sapi/apache_hooks/libphp7.module
|
||||
sapi/cgi/php-cgi
|
||||
sapi/cgi/php-cgi.1
|
||||
sapi/cli/php.1
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
dist: trusty
|
||||
language: c
|
||||
sudo: false
|
||||
addons:
|
||||
|
||||
+4
-4
@@ -5,7 +5,7 @@ INSTALL_DATA = $(INSTALL) -m 644
|
||||
DEFS = -DPHP_ATOM_INC -I$(top_builddir)/include -I$(top_builddir)/main -I$(top_srcdir)
|
||||
COMMON_FLAGS = $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(PHP_FRAMEWORKPATH)
|
||||
|
||||
all: $(all_targets)
|
||||
all: $(all_targets)
|
||||
@echo
|
||||
@echo "Build complete."
|
||||
@echo "Don't forget to run 'make test'."
|
||||
@@ -112,13 +112,13 @@ test: all
|
||||
clean:
|
||||
find . -name \*.gcno -o -name \*.gcda | xargs rm -f
|
||||
find . -name \*.lo -o -name \*.o | xargs rm -f
|
||||
find . -name \*.la -o -name \*.a | xargs rm -f
|
||||
find . -name \*.la -o -name \*.a | xargs rm -f
|
||||
find . -name \*.so | xargs rm -f
|
||||
find . -name .libs -a -type d|xargs rm -rf
|
||||
rm -f libphp$(PHP_MAJOR_VERSION).la $(SAPI_CLI_PATH) $(SAPI_CGI_PATH) $(SAPI_MILTER_PATH) $(SAPI_LITESPEED_PATH) $(SAPI_FPM_PATH) $(OVERALL_TARGET) modules/* libs/*
|
||||
|
||||
distclean: clean
|
||||
rm -f Makefile config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h main/internal_functions_cli.c main/internal_functions.c stamp-h sapi/apache/libphp$(PHP_MAJOR_VERSION).module sapi/apache_hooks/libphp$(PHP_MAJOR_VERSION).module buildmk.stamp Zend/zend_dtrace_gen.h Zend/zend_dtrace_gen.h.bak Zend/zend_config.h TSRM/tsrm_config.h
|
||||
rm -f Makefile config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h main/internal_functions_cli.c main/internal_functions.c stamp-h buildmk.stamp Zend/zend_dtrace_gen.h Zend/zend_dtrace_gen.h.bak Zend/zend_config.h TSRM/tsrm_config.h
|
||||
rm -f php7.spec main/build-defs.h scripts/phpize
|
||||
rm -f ext/date/lib/timelib_config.h ext/mbstring/oniguruma/config.h ext/mbstring/libmbfl/config.h ext/oci8/oci8_dtrace_gen.h ext/oci8/oci8_dtrace_gen.h.bak
|
||||
rm -f scripts/man1/phpize.1 scripts/php-config scripts/man1/php-config.1 sapi/cli/php.1 sapi/cgi/php-cgi.1 ext/phar/phar.1 ext/phar/phar.phar.1
|
||||
@@ -135,7 +135,7 @@ prof-gen:
|
||||
|
||||
prof-clean:
|
||||
find . -name \*.lo -o -name \*.o | xargs rm -f
|
||||
find . -name \*.la -o -name \*.a | xargs rm -f
|
||||
find . -name \*.la -o -name \*.a | xargs rm -f
|
||||
find . -name \*.so | xargs rm -f
|
||||
rm -f libphp$(PHP_MAJOR_VERSION).la $(SAPI_CLI_PATH) $(SAPI_CGI_PATH) $(SAPI_MILTER_PATH) $(SAPI_LITESPEED_PATH) $(SAPI_FPM_PATH) $(OVERALL_TARGET) modules/* libs/*
|
||||
|
||||
|
||||
@@ -1,6 +1,285 @@
|
||||
PHP NEWS
|
||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
?? ??? 2017, PHP 7.1.7
|
||||
23 Nov 2017, PHP 7.1.12
|
||||
|
||||
- Core:
|
||||
. Fixed bug #75420 (Crash when modifing property name in __isset for
|
||||
BP_VAR_IS). (Laruence)
|
||||
. Fixed bug #75368 (mmap/munmap trashing on unlucky allocations). (Nikita,
|
||||
Dmitry)
|
||||
|
||||
- CLI:
|
||||
. Fixed bug #75287 (Builtin webserver crash after chdir in a shutdown
|
||||
function). (Laruence)
|
||||
|
||||
- Enchant:
|
||||
. Fixed bug #53070 (enchant_broker_get_path crashes if no path is set). (jelle
|
||||
van der Waa, cmb)
|
||||
. Fixed bug #75365 (Enchant still reports version 1.1.0). (cmb)
|
||||
|
||||
- Exif:
|
||||
. Fixed bug #75301 (Exif extension has built in revision version). (Peter
|
||||
Kokot)
|
||||
|
||||
- GD:
|
||||
. Fixed bug #65148 (imagerotate may alter image dimensions). (cmb)
|
||||
. Fixed bug #75437 (Wrong reflection on imagewebp). (Fabien Villepinte)
|
||||
|
||||
- intl:
|
||||
. Fixed bug #75317 (UConverter::setDestinationEncoding changes source instead
|
||||
of destination). (andrewnester)
|
||||
|
||||
- interbase:
|
||||
. Fixed bug #75453 (Incorrect reflection for ibase_[p]connect). (villfa)
|
||||
|
||||
- Mysqli:
|
||||
. Fixed bug #75434 (Wrong reflection for mysqli_fetch_all function). (Fabien
|
||||
Villepinte)
|
||||
|
||||
- OCI8:
|
||||
. Fixed valgrind issue. (Tianfang Yang)
|
||||
|
||||
- OpenSSL:
|
||||
. Fixed bug #75363 (openssl_x509_parse leaks memory). (Bob, Jakub Zelenka)
|
||||
. Fixed bug #75307 (Wrong reflection for openssl_open function). (villfa)
|
||||
|
||||
- Opcache:
|
||||
. Fixed bug #75373 (Warning Internal error: wrong size calculation). (Laruence, Dmitry)
|
||||
|
||||
- PGSQL:
|
||||
. Fixed bug #75419 (Default link incorrectly cleared/linked by pg_close()). (Sara)
|
||||
|
||||
- SOAP:
|
||||
. Fixed bug #75464 (Wrong reflection on SoapClient::__setSoapHeaders). (villfa)
|
||||
|
||||
- Zlib:
|
||||
. Fixed bug #75299 (Wrong reflection on inflate_init and inflate_add). (Fabien
|
||||
Villepinte)
|
||||
|
||||
26 Oct 2017, PHP 7.1.11
|
||||
|
||||
- Core:
|
||||
. Fixed bug #75241 (Null pointer dereference in zend_mm_alloc_small()).
|
||||
(Laruence)
|
||||
. Fixed bug #75236 (infinite loop when printing an error-message). (Andrea)
|
||||
. Fixed bug #75252 (Incorrect token formatting on two parse errors in one
|
||||
request). (Nikita)
|
||||
. Fixed bug #75220 (Segfault when calling is_callable on parent).
|
||||
(andrewnester)
|
||||
. Fixed bug #75290 (debug info of Closures of internal functions contain
|
||||
garbage argument names). (Andrea)
|
||||
|
||||
- Apache2Handler:
|
||||
. Fixed bug #75311 (error: 'zend_hash_key' has no member named 'arKey' in
|
||||
apache2handler). (mcarbonneaux)
|
||||
|
||||
- Date:
|
||||
. Fixed bug #75055 (Out-Of-Bounds Read in timelib_meridian()). (Derick)
|
||||
|
||||
- Hash:
|
||||
. Fixed bug #75303 (sha3 hangs on bigendian). (Remi)
|
||||
|
||||
- Intl:
|
||||
. Fixed bug #75318 (The parameter of UConverter::getAliases() is not
|
||||
optional). (cmb)
|
||||
|
||||
- litespeed:
|
||||
. Fixed bug #75248 (Binary directory doesn't get created when building
|
||||
only litespeed SAPI). (petk)
|
||||
. Fixed bug #75251 (Missing program prefix and suffix). (petk)
|
||||
|
||||
- mcrypt:
|
||||
. Fixed bug #72535 (arcfour encryption stream filter crashes php). (Leigh)
|
||||
|
||||
- MySQLi:
|
||||
. Fixed bug #75018 (Data corruption when reading fields of bit type). (Anatol)
|
||||
|
||||
- OCI8:
|
||||
. Fixed incorrect reference counting. (Dmitry, Tianfang Yang)
|
||||
|
||||
- Opcache
|
||||
. Fixed bug #75255 (Request hangs and not finish). (Dmitry)
|
||||
|
||||
- PCRE:
|
||||
. Fixed bug #75207 (applied upstream patch for CVE-2016-1283). (Anatol)
|
||||
|
||||
- PDO_mysql:
|
||||
. Fixed bug #75177 (Type 'bit' is fetched as unexpected string). (Anatol)
|
||||
|
||||
- SPL:
|
||||
. Fixed bug #73629 (SplDoublyLinkedList::setIteratorMode masks intern flags).
|
||||
(J. Jeising, cmb)
|
||||
|
||||
28 Sep 2017, PHP 7.1.10
|
||||
|
||||
- Core:
|
||||
. Fixed bug #75042 (run-tests.php issues with EXTENSION block). (John Boehr)
|
||||
|
||||
- BCMath:
|
||||
. Fixed bug #44995 (bcpowmod() fails if scale != 0). (cmb)
|
||||
. Fixed bug #46781 (BC math handles minus zero incorrectly). (cmb)
|
||||
. Fixed bug #54598 (bcpowmod() may return 1 if modulus is 1). (okano1220, cmb)
|
||||
. Fixed bug #75178 (bcpowmod() misbehaves for non-integer base or modulus). (cmb)
|
||||
|
||||
- CLI server:
|
||||
. Fixed bug #70470 (Built-in server truncates headers spanning over TCP
|
||||
packets). (bouk)
|
||||
|
||||
- CURL:
|
||||
. Fixed bug #75093 (OpenSSL support not detected). (Remi)
|
||||
|
||||
- GD:
|
||||
. Fixed bug #75124 (gdImageGrayScale() may produce colors). (cmb)
|
||||
. Fixed bug #75139 (libgd/gd_interpolation.c:1786: suspicious if ?). (cmb)
|
||||
|
||||
- Gettext:
|
||||
. Fixed bug #73730 (textdomain(null) throws in strict mode). (cmb)
|
||||
|
||||
- Intl:
|
||||
. Fixed bug #75090 (IntlGregorianCalendar doesn't have constants from parent
|
||||
class). (tpunt)
|
||||
. Fixed bug #75193 (segfault in collator_convert_object_to_string). (Remi)
|
||||
|
||||
- PDO_OCI:
|
||||
. Fixed bug #74631 (PDO_PCO with PHP-FPM: OCI environment initialized
|
||||
before PHP-FPM sets it up). (Ingmar Runge)
|
||||
|
||||
- SPL:
|
||||
. Fixed bug #75155 (AppendIterator::append() is broken when appending another
|
||||
AppendIterator). (Nikita)
|
||||
. Fixed bug #75173 (incorrect behavior of AppendIterator::append in foreach loop).
|
||||
(jhdxr)
|
||||
|
||||
- Standard:
|
||||
. Fixed bug #75152 (signed integer overflow in parse_iv). (Laruence)
|
||||
. Fixed bug #75097 (gethostname fails if your host name is 64 chars long). (Andrea)
|
||||
|
||||
31 Aug 2017, PHP 7.1.9
|
||||
|
||||
- Core:
|
||||
. Fixed bug #74947 (Segfault in scanner on INF number). (Laruence)
|
||||
. Fixed bug #74954 (null deref and segfault in zend_generator_resume()). (Bob)
|
||||
. Fixed bug #74725 (html_errors=1 breaks unhandled exceptions). (Andrea)
|
||||
. Fixed bug #75063 (Main CWD initialized with wrong codepage). (Anatol)
|
||||
. Fixed bug #75349 (NAN comparison). (Sara)
|
||||
|
||||
- cURL:
|
||||
. Fixed bug #74125 (Fixed finding CURL on systems with multiarch support).
|
||||
(cebe)
|
||||
|
||||
- Date:
|
||||
. Fixed bug #75002 (Null Pointer Dereference in timelib_time_clone). (Derick)
|
||||
|
||||
- Intl:
|
||||
. Fixed bug #74993 (Wrong reflection on some locale_* functions). (Sara)
|
||||
|
||||
- Mbstring:
|
||||
. Fixed bug #71606 (Segmentation fault mb_strcut with HTML-ENTITIES encoding).
|
||||
(cmb)
|
||||
. Fixed bug #62934 (mb_convert_kana() does not convert iteration marks).
|
||||
(Nikita)
|
||||
. Fixed bug #75001 (Wrong reflection on mb_eregi_replace). (Fabien
|
||||
Villepinte)
|
||||
|
||||
- MySQLi:
|
||||
. Fixed bug #74968 (PHP crashes when calling mysqli_result::fetch_object with
|
||||
an abstract class). (Anatol)
|
||||
|
||||
- OCI8:
|
||||
. Expose oci_unregister_taf_callback() (Tianfang Yang)
|
||||
|
||||
- Opcache:
|
||||
. Fixed bug #74980 (Narrowing occurred during type inference). (Laruence)
|
||||
|
||||
- phar:
|
||||
. Fixed bug #74991 (include_path has a 4096 char limit in some cases).
|
||||
(bwbroersma)
|
||||
|
||||
- Reflection:
|
||||
. Fixed bug #74949 (null pointer dereference in _function_string). (Laruence)
|
||||
|
||||
- Session:
|
||||
. Fixed bug #74892 (Url Rewriting (trans_sid) not working on urls that start
|
||||
with "#"). (Andrew Nester)
|
||||
. Fixed bug #74833 (SID constant created with wrong module number). (Anatol)
|
||||
|
||||
- SimpleXML:
|
||||
. Fixed bug #74950 (nullpointer deref in simplexml_element_getDocNamespaces).
|
||||
(Laruence)
|
||||
|
||||
- SPL:
|
||||
. Fixed bug #75049 (spl_autoload_unregister can't handle
|
||||
spl_autoload_functions results). (Laruence)
|
||||
. Fixed bug #74669 (Unserialize ArrayIterator broken). (Andrew Nester)
|
||||
. Fixed bug #74977 (Appending AppendIterator leads to segfault).
|
||||
(Andrew Nester)
|
||||
. Fixed bug #75015 (Crash in recursive iterator destructors). (Julien)
|
||||
|
||||
- Standard:
|
||||
. Fixed bug #75075 (unpack with X* causes infinity loop). (Laruence)
|
||||
. Fixed bug #74103 (heap-use-after-free when unserializing invalid array
|
||||
size). (Nikita)
|
||||
. Fixed bug #75054 (A Denial of Service Vulnerability was found when
|
||||
performing deserialization). (Nikita)
|
||||
|
||||
- WDDX:
|
||||
. Fixed bug #73793 (WDDX uses wrong decimal seperator). (cmb)
|
||||
|
||||
- XMLRPC:
|
||||
. Fixed bug #74975 (Incorrect xmlrpc serialization for classes with declared
|
||||
properties). (blar)
|
||||
|
||||
03 Aug 2017, PHP 7.1.8
|
||||
|
||||
- Core:
|
||||
. Fixed bug #74832 (Loading PHP extension with already registered function
|
||||
name leads to a crash). (jpauli)
|
||||
. Fixed bug #74780 (parse_url() broken when query string contains colon).
|
||||
(jhdxr)
|
||||
. Fixed bug #74761 (Unary operator expected error on some systems). (petk)
|
||||
. Fixed bug #73900 (Use After Free in unserialize() SplFixedArray). (nikic)
|
||||
. Fixed bug #74923 (Crash when crawling through network share). (Anatol)
|
||||
. Fixed bug #74913 (fixed incorrect poll.h include). (petk)
|
||||
. Fixed bug #74906 (fixed incorrect errno.h include). (petk)
|
||||
|
||||
- Date:
|
||||
. Fixed bug #74852 (property_exists returns true on unknown DateInterval
|
||||
property). (jhdxr)
|
||||
|
||||
- OCI8:
|
||||
. Fixed bug #74625 (Integer overflow in oci_bind_array_by_name). (Ingmar Runge)
|
||||
|
||||
- Opcache:
|
||||
. Fixed bug #74623 (Infinite loop in type inference when using HTMLPurifier).
|
||||
(nikic)
|
||||
|
||||
- OpenSSL:
|
||||
. Fixed bug #74798 (pkcs7_en/decrypt does not work if \x0a is used in content).
|
||||
(Anatol)
|
||||
. Added OPENSSL_DONT_ZERO_PAD_KEY constant to prevent key padding and fix bug
|
||||
#71917 (openssl_open() returns junk on envelope < 16 bytes) and bug #72362
|
||||
(OpenSSL Blowfish encryption is incorrect for short keys). (Jakub Zelenka)
|
||||
|
||||
- PDO:
|
||||
. Fixed bug #69356 (PDOStatement::debugDumpParams() truncates query). (Adam
|
||||
Baratz)
|
||||
|
||||
- SPL:
|
||||
. Fixed bug #73471 (PHP freezes with AppendIterator). (jhdxr)
|
||||
|
||||
- SQLite3:
|
||||
. Fixed bug #74883 (SQLite3::__construct() produces "out of memory" exception
|
||||
with invalid flags). (Anatol)
|
||||
|
||||
- Wddx:
|
||||
. Fixed bug #73173 (huge memleak when wddx_unserialize).
|
||||
(tloi at fortinet dot com)
|
||||
|
||||
- zlib:
|
||||
. Fixed bug #73944 (dictionary option of inflate_init() does not work).
|
||||
(wapmorgan)
|
||||
|
||||
06 Jul 2017, PHP 7.1.7
|
||||
|
||||
- Core:
|
||||
. Fixed bug #74738 (Multiple [PATH=] and [HOST=] sections not properly
|
||||
@@ -8,6 +287,14 @@ PHP NEWS
|
||||
. Fixed bug #74658 (Undefined constants in array properties result in broken
|
||||
properties). (Laruence)
|
||||
. Fixed misparsing of abstract unix domain socket names. (Sara)
|
||||
. Fixed bug #74603 (PHP INI Parsing Stack Buffer Overflow Vulnerability).
|
||||
(Stas)
|
||||
. Fixed bug #74101, bug #74614 (Unserialize Heap Use-After-Free (READ: 1) in
|
||||
zval_get_type). (Nikita)
|
||||
. Fixed bug #74111 (Heap buffer overread (READ: 1) finish_nested_data from
|
||||
unserialize). (Nikita)
|
||||
. Fixed bug #74819 (wddx_deserialize() heap out-of-bound read via
|
||||
php_parse_date()). (Derick)
|
||||
|
||||
- Date:
|
||||
. Fixed bug #74639 (implement clone for DatePeriod and DateInterval).
|
||||
@@ -16,6 +303,9 @@ PHP NEWS
|
||||
- DOM:
|
||||
. Fixed bug #69373 (References to deleted XPath query results). (ttoohey)
|
||||
|
||||
- GD:
|
||||
. Fixed bug #74435 (Buffer over-read into uninitialized memory). (cmb)
|
||||
|
||||
- Intl:
|
||||
. Fixed bug #73473 (Stack Buffer Overflow in msgfmt_parse_message). (libnex)
|
||||
. Fixed bug #74705 (Wrong reflection on Collator::getSortKey and
|
||||
@@ -26,7 +316,7 @@ PHP NEWS
|
||||
CVE-2017-9228, CVE-2017-9229) (Remi, Mamoru TASAKA)
|
||||
|
||||
- OCI8:
|
||||
. Add TAF callback (PR #2459). (KoenigsKind)
|
||||
. Add TAF callback (PR #2459). (KoenigsKind)
|
||||
|
||||
- Opcache:
|
||||
. Fixed bug #74663 (Segfault with opcache.memory_protect and
|
||||
@@ -36,6 +326,8 @@ PHP NEWS
|
||||
- OpenSSL:
|
||||
. Fixed bug #74720 (pkcs7_en/decrypt does not work if \x1a is used in
|
||||
content). (Anatol)
|
||||
. Fixed bug #74651 (negative-size-param (-1) in memcpy in zif_openssl_seal()).
|
||||
(Stas)
|
||||
|
||||
- PDO_OCI:
|
||||
. Support Instant Client 12.2 in --with-pdo-oci configure option.
|
||||
|
||||
@@ -53,27 +53,43 @@ string(3) "1st"
|
||||
string(3) "2nd"
|
||||
NULL
|
||||
string(3) "4th"
|
||||
array(3) {
|
||||
array(4) {
|
||||
[0]=>
|
||||
string(3) "1st"
|
||||
[1]=>
|
||||
&string(3) "2nd"
|
||||
[2]=>
|
||||
NULL
|
||||
[3]=>
|
||||
string(3) "4th"
|
||||
}
|
||||
array(2) {
|
||||
array(4) {
|
||||
[0]=>
|
||||
NULL
|
||||
[1]=>
|
||||
string(3) "2nd"
|
||||
[2]=>
|
||||
NULL
|
||||
[3]=>
|
||||
string(3) "4th"
|
||||
}
|
||||
array(2) {
|
||||
array(4) {
|
||||
[0]=>
|
||||
NULL
|
||||
[1]=>
|
||||
&string(3) "2nd"
|
||||
[2]=>
|
||||
NULL
|
||||
[3]=>
|
||||
string(3) "4th"
|
||||
}
|
||||
array(1) {
|
||||
array(4) {
|
||||
[0]=>
|
||||
NULL
|
||||
[1]=>
|
||||
NULL
|
||||
[2]=>
|
||||
NULL
|
||||
[3]=>
|
||||
string(3) "4th"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
--TEST--
|
||||
Bug #73900: Use After Free in unserialize() SplFixedArray
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$a = new stdClass;
|
||||
$b = new SplFixedArray(1);
|
||||
$b[0] = $a;
|
||||
$c = &$b[0];
|
||||
var_dump($c);
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
object(stdClass)#1 (0) {
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
0=0&~2000000000
|
||||
@@ -0,0 +1,15 @@
|
||||
--TEST--
|
||||
Bug #74603 (PHP INI Parsing Stack Buffer Overflow Vulnerability)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (PHP_INT_MAX !== 2147483647)
|
||||
die('skip for 32-bit only');
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(parse_ini_file(__DIR__ . "/bug74603.ini", true, INI_SCANNER_NORMAL));
|
||||
?>
|
||||
--EXPECT--
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(1) "0"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
Bug #74840: Opcache overwrites argument of GENERATOR_RETURN within finally
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$g = (function($a) {
|
||||
try {
|
||||
return $a + 1;
|
||||
} finally {
|
||||
$b = $a + 2;
|
||||
var_dump($b);
|
||||
}
|
||||
yield; // Generator
|
||||
})(1);
|
||||
$g->next();
|
||||
var_dump($g->getReturn());
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
int(3)
|
||||
int(2)
|
||||
@@ -0,0 +1,12 @@
|
||||
--TEST--
|
||||
Bug #74947 (Segfault in scanner on INF number)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
echo 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;
|
||||
|
||||
echo -200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
INF-INF
|
||||
@@ -0,0 +1,13 @@
|
||||
--TEST--
|
||||
Bug #75241 (Null pointer dereference in zend_mm_alloc_small())
|
||||
--FILE--
|
||||
<?php
|
||||
function eh(){}
|
||||
|
||||
set_error_handler('eh');
|
||||
|
||||
$d->d = &$d + $d->d/=0;
|
||||
var_dump($d);
|
||||
?>
|
||||
--EXPECT--
|
||||
float(INF)
|
||||
@@ -0,0 +1,28 @@
|
||||
--TEST--
|
||||
Bug #75252: Incorrect token formatting on two parse errors in one request
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$code = <<<'CODE'
|
||||
function test_missing_semicolon() : string {
|
||||
$x = []
|
||||
FOO
|
||||
}
|
||||
CODE;
|
||||
|
||||
try {
|
||||
eval($code);
|
||||
} catch (ParseError $e) {
|
||||
var_dump($e->getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
eval($code);
|
||||
} catch (ParseError $e) {
|
||||
var_dump($e->getMessage());
|
||||
}
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
string(41) "syntax error, unexpected 'FOO' (T_STRING)"
|
||||
string(41) "syntax error, unexpected 'FOO' (T_STRING)"
|
||||
@@ -0,0 +1,26 @@
|
||||
--TEST--
|
||||
Bug #75290 (debug info of Closures of internal functions contain garbage argument names)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
var_dump((new ReflectionFunction('sin'))->getClosure());
|
||||
|
||||
var_dump(function ($someThing) {});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
object(Closure)#2 (1) {
|
||||
["parameter"]=>
|
||||
array(1) {
|
||||
["$number"]=>
|
||||
string(10) "<required>"
|
||||
}
|
||||
}
|
||||
object(Closure)#2 (1) {
|
||||
["parameter"]=>
|
||||
array(1) {
|
||||
["$someThing"]=>
|
||||
string(10) "<required>"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
--TEST--
|
||||
Bug #75420.1 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __isset($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function __get($x) { var_dump($x); return 42; }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump($obj->$name ?? 12);
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(3) "foo"
|
||||
int(42)
|
||||
int(24)
|
||||
@@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
Bug #75420.10 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function offsetGet($x) { var_dump($x); return 42; }
|
||||
public function offsetSet($x, $y) { }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$name = str_repeat($name, 2);
|
||||
var_dump($obj[$name] ?? 12);
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(6) "foofoo"
|
||||
int(42)
|
||||
int(24)
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #75420.11 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function offsetGet($x) { var_dump($x); return 42; }
|
||||
public function offsetSet($x, $y) { }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump(empty($obj[$name]));
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(3) "foo"
|
||||
bool(false)
|
||||
int(24)
|
||||
@@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
Bug #75420.12 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function offsetGet($x) { var_dump($x); return 42; }
|
||||
public function offsetSet($x, $y) { }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$name = str_repeat($name, 2);
|
||||
var_dump(empty($obj[$name]));
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(6) "foofoo"
|
||||
bool(false)
|
||||
int(24)
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #75420.13 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { $GLOBALS["obj"] = 24; return true; }
|
||||
public function offsetGet($x) { var_dump($x); return 42; }
|
||||
public function offsetSet($x, $y) { }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump($obj[$name] ?? 12);
|
||||
var_dump($obj);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(3) "foo"
|
||||
int(42)
|
||||
int(24)
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #75420.14 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { $GLOBALS["obj"] = 24; return true; }
|
||||
public function offsetGet($x) { var_dump($x); return 42; }
|
||||
public function offsetSet($x, $y) { }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump(empty($obj[$name]));
|
||||
var_dump($obj);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(3) "foo"
|
||||
bool(false)
|
||||
int(24)
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #75420.15 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { }
|
||||
public function offsetGet($x) { }
|
||||
public function offsetSet($x, $y) { $GLOBALS["name"] = 24; var_dump($x); }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$name = str_repeat($name, 2);
|
||||
$obj[$name] = 1;
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(6) "foofoo"
|
||||
int(24)
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #75420.16 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { }
|
||||
public function offsetGet($x) { }
|
||||
public function offsetSet($x, $y) { $GLOBALS["obj"] = 24; var_dump($this); }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$obj[$name] = 1;
|
||||
var_dump($obj);
|
||||
?>
|
||||
--EXPECT--
|
||||
object(Test)#1 (0) {
|
||||
}
|
||||
int(24)
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #75420.2 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __isset($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function __get($x) { var_dump($x); return 42; }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$name = str_repeat($name, 2);
|
||||
var_dump($obj->$name ?? 12);
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(6) "foofoo"
|
||||
int(42)
|
||||
int(24)
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
--TEST--
|
||||
Bug #75420.3 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __isset($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function __get($x) { var_dump($x); return 42; }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump(empty($obj->$name));
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(3) "foo"
|
||||
bool(false)
|
||||
int(24)
|
||||
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Bug #75420.4 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __isset($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function __get($x) { var_dump($x); return 42; }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$name = str_repeat($name, 2);
|
||||
var_dump(empty($obj->$name));
|
||||
?>
|
||||
--EXPECT--
|
||||
string(6) "foofoo"
|
||||
bool(false)
|
||||
@@ -0,0 +1,19 @@
|
||||
--TEST--
|
||||
Bug #75420.5 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __isset($x) { $GLOBALS["obj"] = 24; return true; }
|
||||
public function __get($x) { var_dump($this); return 42; }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump($obj->$name ?? 12);
|
||||
var_dump($obj);
|
||||
?>
|
||||
--EXPECT--
|
||||
object(Test)#1 (0) {
|
||||
}
|
||||
int(42)
|
||||
int(24)
|
||||
@@ -0,0 +1,19 @@
|
||||
--TEST--
|
||||
Bug #75420.6 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __isset($x) { $GLOBALS["obj"] = 24; return true; }
|
||||
public function __get($x) { var_dump($this); return 42; }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump(empty($obj->$name));
|
||||
var_dump($obj);
|
||||
?>
|
||||
--EXPECT--
|
||||
object(Test)#1 (0) {
|
||||
}
|
||||
bool(false)
|
||||
int(24)
|
||||
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Bug #75420.7 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __set($x,$v) { $GLOBALS["name"] = 24; var_dump($x); }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$name = str_repeat($name, 2);
|
||||
$obj->$name = 1;
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(6) "foofoo"
|
||||
int(24)
|
||||
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Bug #75420.8 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __set($x,$v) { $GLOBALS["obj"] = 24; var_dump($this); }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$obj->$name = 1;
|
||||
var_dump($obj);
|
||||
?>
|
||||
--EXPECT--
|
||||
object(Test)#1 (0) {
|
||||
}
|
||||
int(24)
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #75420.9 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function offsetGet($x) { var_dump($x); return 42; }
|
||||
public function offsetSet($x, $y) { }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump($obj[$name] ?? 12);
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(3) "foo"
|
||||
int(42)
|
||||
int(24)
|
||||
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Bug #75420 (Crash when modifing property name in __isset for BP_VAR_IS)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class Test {
|
||||
public function __isset($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function __get($x) { var_dump($x); return 42; }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump($obj->$name ?? 12);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(3) "foo"
|
||||
int(42)
|
||||
@@ -0,0 +1,45 @@
|
||||
--TEST--
|
||||
Bug #74954 (crash after update of generator yielding from finished generator)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
function from() {
|
||||
yield 1;
|
||||
throw new Exception();
|
||||
}
|
||||
|
||||
function gen($gen) {
|
||||
try {
|
||||
var_dump(yield from $gen);
|
||||
} catch (Exception $e) { print "Caught exception!\n$e\n"; }
|
||||
}
|
||||
|
||||
$gen = from();
|
||||
$gens[] = gen($gen);
|
||||
$gens[] = gen($gen);
|
||||
|
||||
foreach ($gens as $g) {
|
||||
$g->current();
|
||||
}
|
||||
|
||||
do {
|
||||
foreach ($gens as $i => $g) {
|
||||
$g->next();
|
||||
}
|
||||
} while($gens[0]->valid());
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Caught exception!
|
||||
Exception in %s:%d
|
||||
Stack trace:
|
||||
#0 %s(%d): from()
|
||||
#1 [internal function]: gen(Object(Generator))
|
||||
#2 %s(%d): Generator->next()
|
||||
#3 {main}
|
||||
Caught exception!
|
||||
ClosedGeneratorException: Generator yielded from aborted, no return value available in %s:%d
|
||||
Stack trace:
|
||||
#0 [internal function]: gen(Object(Generator))
|
||||
#1 %s(%d): Generator->next()
|
||||
#2 {main}
|
||||
+7
-1
@@ -660,6 +660,10 @@ int zend_startup(zend_utility_functions *utility_functions, char **extensions) /
|
||||
extern zend_php_scanner_globals language_scanner_globals;
|
||||
#endif
|
||||
|
||||
#ifdef ZEND_WIN32
|
||||
php_win32_cp_set_by_id(65001);
|
||||
#endif
|
||||
|
||||
start_memory_manager();
|
||||
|
||||
virtual_cwd_startup(); /* Could use shutdown to free the main cwd but it would just slow it down for CGI */
|
||||
@@ -712,7 +716,7 @@ int zend_startup(zend_utility_functions *utility_functions, char **extensions) /
|
||||
zend_compile_file = compile_file;
|
||||
zend_execute_ex = execute_ex;
|
||||
zend_execute_internal = NULL;
|
||||
#endif /* HAVE_SYS_SDT_H */
|
||||
#endif /* HAVE_DTRACE */
|
||||
zend_compile_string = compile_string;
|
||||
zend_throw_exception_hook = NULL;
|
||||
|
||||
@@ -912,6 +916,8 @@ void zend_set_utility_values(zend_utility_values *utility_values) /* {{{ */
|
||||
/* this should be compatible with the standard zenderror */
|
||||
ZEND_COLD void zenderror(const char *error) /* {{{ */
|
||||
{
|
||||
CG(parse_error) = 0;
|
||||
|
||||
if (EG(exception)) {
|
||||
/* An exception was thrown in the lexer, don't throw another in the parser. */
|
||||
return;
|
||||
|
||||
@@ -279,7 +279,6 @@ ZEND_COLD void zenderror(const char *error);
|
||||
#define ZEND_STANDARD_CLASS_DEF_PTR zend_standard_class_def
|
||||
extern ZEND_API zend_class_entry *zend_standard_class_def;
|
||||
extern ZEND_API zend_utility_values zend_uv;
|
||||
extern ZEND_API zval zval_used_for_init;
|
||||
|
||||
/* If DTrace is available and enabled */
|
||||
extern ZEND_API zend_bool zend_dtrace_enabled;
|
||||
|
||||
+9
-4
@@ -2024,17 +2024,19 @@ ZEND_API zend_module_entry* zend_register_module_ex(zend_module_entry *module) /
|
||||
zend_string_release(lcname);
|
||||
return NULL;
|
||||
}
|
||||
zend_string_release(lcname);
|
||||
module = module_ptr;
|
||||
EG(current_module) = module;
|
||||
|
||||
if (module->functions && zend_register_functions(NULL, module->functions, NULL, module->type)==FAILURE) {
|
||||
zend_hash_del(&module_registry, lcname);
|
||||
zend_string_release(lcname);
|
||||
EG(current_module) = NULL;
|
||||
zend_error(E_CORE_WARNING,"%s: Unable to register functions, unable to load", module->name);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
EG(current_module) = NULL;
|
||||
zend_string_release(lcname);
|
||||
return module;
|
||||
}
|
||||
/* }}} */
|
||||
@@ -3066,7 +3068,8 @@ get_function_via_handler:
|
||||
(!fcc->function_handler->common.scope ||
|
||||
!instanceof_function(ce_org, fcc->function_handler->common.scope))) {
|
||||
if (fcc->function_handler->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
|
||||
if (fcc->function_handler->type != ZEND_OVERLOADED_FUNCTION) {
|
||||
if (fcc->function_handler->type != ZEND_OVERLOADED_FUNCTION &&
|
||||
fcc->function_handler->common.function_name) {
|
||||
zend_string_release(fcc->function_handler->common.function_name);
|
||||
}
|
||||
zend_free_trampoline(fcc->function_handler);
|
||||
@@ -3238,7 +3241,8 @@ again:
|
||||
((fcc->function_handler->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) ||
|
||||
fcc->function_handler->type == ZEND_OVERLOADED_FUNCTION_TEMPORARY ||
|
||||
fcc->function_handler->type == ZEND_OVERLOADED_FUNCTION)) {
|
||||
if (fcc->function_handler->type != ZEND_OVERLOADED_FUNCTION) {
|
||||
if (fcc->function_handler->type != ZEND_OVERLOADED_FUNCTION &&
|
||||
fcc->function_handler->common.function_name) {
|
||||
zend_string_release(fcc->function_handler->common.function_name);
|
||||
}
|
||||
zend_free_trampoline(fcc->function_handler);
|
||||
@@ -3325,7 +3329,8 @@ again:
|
||||
((fcc->function_handler->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) ||
|
||||
fcc->function_handler->type == ZEND_OVERLOADED_FUNCTION_TEMPORARY ||
|
||||
fcc->function_handler->type == ZEND_OVERLOADED_FUNCTION)) {
|
||||
if (fcc->function_handler->type != ZEND_OVERLOADED_FUNCTION) {
|
||||
if (fcc->function_handler->type != ZEND_OVERLOADED_FUNCTION &&
|
||||
fcc->function_handler->common.function_name) {
|
||||
zend_string_release(fcc->function_handler->common.function_name);
|
||||
}
|
||||
zend_free_trampoline(fcc->function_handler);
|
||||
|
||||
+20
-2
@@ -260,6 +260,8 @@ struct _zend_mm_heap {
|
||||
int peak_chunks_count; /* peak number of allocated chunks for current request */
|
||||
int cached_chunks_count; /* number of cached chunks */
|
||||
double avg_chunks_count; /* average number of chunks allocated per request */
|
||||
int last_chunks_delete_boundary; /* numer of chunks after last deletion */
|
||||
int last_chunks_delete_count; /* number of deletion over the last boundary */
|
||||
#if ZEND_MM_CUSTOM
|
||||
union {
|
||||
struct {
|
||||
@@ -283,7 +285,7 @@ struct _zend_mm_chunk {
|
||||
uint32_t free_pages; /* number of free pages */
|
||||
uint32_t free_tail; /* number of free pages at the end of chunk */
|
||||
uint32_t num;
|
||||
char reserve[64 - (sizeof(void*) * 3 + sizeof(int) * 3)];
|
||||
char reserve[64 - (sizeof(void*) * 3 + sizeof(uint32_t) * 3)];
|
||||
zend_mm_heap heap_slot; /* used only in main chunk */
|
||||
zend_mm_page_map free_map; /* 512 bits or 64 bytes */
|
||||
zend_mm_page_info map[ZEND_MM_PAGES]; /* 2 KB = 512 * 4 */
|
||||
@@ -1076,7 +1078,9 @@ static zend_always_inline void zend_mm_delete_chunk(zend_mm_heap *heap, zend_mm_
|
||||
chunk->next->prev = chunk->prev;
|
||||
chunk->prev->next = chunk->next;
|
||||
heap->chunks_count--;
|
||||
if (heap->chunks_count + heap->cached_chunks_count < heap->avg_chunks_count + 0.1) {
|
||||
if (heap->chunks_count + heap->cached_chunks_count < heap->avg_chunks_count + 0.1
|
||||
|| (heap->chunks_count == heap->last_chunks_delete_boundary
|
||||
&& heap->last_chunks_delete_count >= 4)) {
|
||||
/* delay deletion */
|
||||
heap->cached_chunks_count++;
|
||||
chunk->next = heap->cached_chunks;
|
||||
@@ -1085,6 +1089,14 @@ static zend_always_inline void zend_mm_delete_chunk(zend_mm_heap *heap, zend_mm_
|
||||
#if ZEND_MM_STAT || ZEND_MM_LIMIT
|
||||
heap->real_size -= ZEND_MM_CHUNK_SIZE;
|
||||
#endif
|
||||
if (!heap->cached_chunks) {
|
||||
if (heap->chunks_count != heap->last_chunks_delete_boundary) {
|
||||
heap->last_chunks_delete_boundary = heap->chunks_count;
|
||||
heap->last_chunks_delete_count = 0;
|
||||
} else {
|
||||
heap->last_chunks_delete_count++;
|
||||
}
|
||||
}
|
||||
if (!heap->cached_chunks || chunk->num > heap->cached_chunks->num) {
|
||||
zend_mm_chunk_free(heap, chunk, ZEND_MM_CHUNK_SIZE);
|
||||
} else {
|
||||
@@ -1819,6 +1831,8 @@ static zend_mm_heap *zend_mm_init(void)
|
||||
heap->peak_chunks_count = 1;
|
||||
heap->cached_chunks_count = 0;
|
||||
heap->avg_chunks_count = 1.0;
|
||||
heap->last_chunks_delete_boundary = 0;
|
||||
heap->last_chunks_delete_count = 0;
|
||||
#if ZEND_MM_STAT || ZEND_MM_LIMIT
|
||||
heap->real_size = ZEND_MM_CHUNK_SIZE;
|
||||
#endif
|
||||
@@ -2235,6 +2249,8 @@ void zend_mm_shutdown(zend_mm_heap *heap, int full, int silent)
|
||||
p->map[0] = ZEND_MM_LRUN(ZEND_MM_FIRST_PAGE);
|
||||
heap->chunks_count = 1;
|
||||
heap->peak_chunks_count = 1;
|
||||
heap->last_chunks_delete_boundary = 0;
|
||||
heap->last_chunks_delete_count = 0;
|
||||
#if ZEND_MM_STAT || ZEND_MM_LIMIT
|
||||
heap->real_size = ZEND_MM_CHUNK_SIZE;
|
||||
#endif
|
||||
@@ -2767,6 +2783,8 @@ ZEND_API zend_mm_heap *zend_mm_startup_ex(const zend_mm_handlers *handlers, void
|
||||
heap->peak_chunks_count = 1;
|
||||
heap->cached_chunks_count = 0;
|
||||
heap->avg_chunks_count = 1.0;
|
||||
heap->last_chunks_delete_boundary = 0;
|
||||
heap->last_chunks_delete_count = 0;
|
||||
#if ZEND_MM_STAT || ZEND_MM_LIMIT
|
||||
heap->real_size = ZEND_MM_CHUNK_SIZE;
|
||||
#endif
|
||||
|
||||
@@ -220,6 +220,10 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_set_exception_handler, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, exception_handler)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_get_defined_functions, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, exclude_disabled)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_create_function, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, args)
|
||||
ZEND_ARG_INFO(0, code)
|
||||
@@ -366,7 +370,7 @@ static const zend_function_entry builtin_functions[] = { /* {{{ */
|
||||
ZEND_FE(get_declared_classes, arginfo_zend__void)
|
||||
ZEND_FE(get_declared_traits, arginfo_zend__void)
|
||||
ZEND_FE(get_declared_interfaces, arginfo_zend__void)
|
||||
ZEND_FE(get_defined_functions, arginfo_zend__void)
|
||||
ZEND_FE(get_defined_functions, arginfo_get_defined_functions)
|
||||
ZEND_FE(get_defined_vars, arginfo_zend__void)
|
||||
ZEND_FE(create_function, arginfo_create_function)
|
||||
ZEND_FE(get_resource_type, arginfo_get_resource_type)
|
||||
@@ -574,7 +578,7 @@ ZEND_FUNCTION(func_get_args)
|
||||
{
|
||||
zval *p, *q;
|
||||
uint32_t arg_count, first_extra_arg;
|
||||
uint32_t i, n;
|
||||
uint32_t i;
|
||||
zend_execute_data *ex = EX(prev_execute_data);
|
||||
|
||||
if (ZEND_CALL_INFO(ex) & ZEND_CALL_CODE) {
|
||||
@@ -594,7 +598,6 @@ ZEND_FUNCTION(func_get_args)
|
||||
zend_hash_real_init(Z_ARRVAL_P(return_value), 1);
|
||||
ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) {
|
||||
i = 0;
|
||||
n = 0;
|
||||
p = ZEND_CALL_ARG(ex, 1);
|
||||
if (arg_count > first_extra_arg) {
|
||||
while (i < first_extra_arg) {
|
||||
@@ -604,7 +607,8 @@ ZEND_FUNCTION(func_get_args)
|
||||
if (Z_OPT_REFCOUNTED_P(q)) {
|
||||
Z_ADDREF_P(q);
|
||||
}
|
||||
n++;
|
||||
} else {
|
||||
q = &EG(uninitialized_zval);
|
||||
}
|
||||
ZEND_HASH_FILL_ADD(q);
|
||||
p++;
|
||||
@@ -619,14 +623,15 @@ ZEND_FUNCTION(func_get_args)
|
||||
if (Z_OPT_REFCOUNTED_P(q)) {
|
||||
Z_ADDREF_P(q);
|
||||
}
|
||||
n++;
|
||||
} else {
|
||||
q = &EG(uninitialized_zval);
|
||||
}
|
||||
ZEND_HASH_FILL_ADD(q);
|
||||
p++;
|
||||
i++;
|
||||
}
|
||||
} ZEND_HASH_FILL_END();
|
||||
Z_ARRVAL_P(return_value)->nNumOfElements = n;
|
||||
Z_ARRVAL_P(return_value)->nNumOfElements = arg_count;
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
@@ -1279,7 +1284,7 @@ ZEND_FUNCTION(get_object_vars)
|
||||
zend_unmangle_property_name_ex(key, &class_name, &prop_name, &prop_len);
|
||||
zend_hash_str_add_new(Z_ARRVAL_P(return_value), prop_name, prop_len, value);
|
||||
} else {
|
||||
zend_symbtable_add_new(Z_ARRVAL_P(return_value), key, value);
|
||||
zend_symtable_add_new(Z_ARRVAL_P(return_value), key, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2301,7 +2306,6 @@ static void debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) /
|
||||
array_init_size(arg_array, num_args);
|
||||
if (num_args) {
|
||||
uint32_t i = 0;
|
||||
uint32_t n = 0;
|
||||
zval *p = ZEND_CALL_ARG(call, 1);
|
||||
|
||||
zend_hash_real_init(Z_ARRVAL_P(arg_array), 1);
|
||||
@@ -2324,12 +2328,9 @@ static void debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) /
|
||||
if (Z_OPT_REFCOUNTED_P(arg)) {
|
||||
Z_ADDREF_P(arg);
|
||||
}
|
||||
n++;
|
||||
ZEND_HASH_FILL_ADD(arg);
|
||||
} else {
|
||||
zval tmp;
|
||||
ZVAL_UNDEF(&tmp);
|
||||
ZEND_HASH_FILL_ADD(&tmp);
|
||||
ZEND_HASH_FILL_ADD(&EG(uninitialized_zval));
|
||||
}
|
||||
i++;
|
||||
}
|
||||
@@ -2339,9 +2340,10 @@ static void debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) /
|
||||
if (Z_OPT_REFCOUNTED_P(p)) {
|
||||
Z_ADDREF_P(p);
|
||||
}
|
||||
n++;
|
||||
ZEND_HASH_FILL_ADD(p);
|
||||
} else {
|
||||
ZEND_HASH_FILL_ADD(&EG(uninitialized_zval));
|
||||
}
|
||||
ZEND_HASH_FILL_ADD(p);
|
||||
p++;
|
||||
i++;
|
||||
}
|
||||
@@ -2354,14 +2356,15 @@ static void debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) /
|
||||
if (Z_OPT_REFCOUNTED_P(p)) {
|
||||
Z_ADDREF_P(p);
|
||||
}
|
||||
n++;
|
||||
ZEND_HASH_FILL_ADD(p);
|
||||
} else {
|
||||
ZEND_HASH_FILL_ADD(&EG(uninitialized_zval));
|
||||
}
|
||||
ZEND_HASH_FILL_ADD(p);
|
||||
p++;
|
||||
i++;
|
||||
}
|
||||
} ZEND_HASH_FILL_END();
|
||||
Z_ARRVAL_P(arg_array)->nNumOfElements = n;
|
||||
Z_ARRVAL_P(arg_array)->nNumOfElements = num_args;
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
+10
-3
@@ -503,6 +503,7 @@ static HashTable *zend_closure_get_debug_info(zval *object, int *is_temp) /* {{{
|
||||
zval val;
|
||||
struct _zend_arg_info *arg_info = closure->func.common.arg_info;
|
||||
HashTable *debug_info;
|
||||
zend_bool zstr_args = (closure->func.type == ZEND_USER_FUNCTION) || (closure->func.common.fn_flags & ZEND_ACC_USER_ARG_INFO);
|
||||
|
||||
*is_temp = 1;
|
||||
|
||||
@@ -535,9 +536,15 @@ static HashTable *zend_closure_get_debug_info(zval *object, int *is_temp) /* {{{
|
||||
zend_string *name;
|
||||
zval info;
|
||||
if (arg_info->name) {
|
||||
name = zend_strpprintf(0, "%s$%s",
|
||||
arg_info->pass_by_reference ? "&" : "",
|
||||
ZSTR_VAL(arg_info->name));
|
||||
if (zstr_args) {
|
||||
name = zend_strpprintf(0, "%s$%s",
|
||||
arg_info->pass_by_reference ? "&" : "",
|
||||
ZSTR_VAL(arg_info->name));
|
||||
} else {
|
||||
name = zend_strpprintf(0, "%s$%s",
|
||||
arg_info->pass_by_reference ? "&" : "",
|
||||
((zend_internal_arg_info*)arg_info)->name);
|
||||
}
|
||||
} else {
|
||||
name = zend_strpprintf(0, "%s$param%d",
|
||||
arg_info->pass_by_reference ? "&" : "",
|
||||
|
||||
+3
-10
@@ -1720,16 +1720,9 @@ fetch_from_array:
|
||||
zend_error(E_NOTICE, "Indirect modification of overloaded element of %s has no effect", ZSTR_VAL(ce->name));
|
||||
} else if (EXPECTED(retval && Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
if (!Z_ISREF_P(retval)) {
|
||||
if (Z_REFCOUNTED_P(retval) &&
|
||||
Z_REFCOUNT_P(retval) > 1) {
|
||||
if (Z_TYPE_P(retval) != IS_OBJECT) {
|
||||
Z_DELREF_P(retval);
|
||||
ZVAL_DUP(result, retval);
|
||||
retval = result;
|
||||
} else {
|
||||
ZVAL_COPY_VALUE(result, retval);
|
||||
retval = result;
|
||||
}
|
||||
if (result != retval) {
|
||||
ZVAL_COPY(result, retval);
|
||||
retval = result;
|
||||
}
|
||||
if (Z_TYPE_P(retval) != IS_OBJECT) {
|
||||
zend_class_entry *ce = Z_OBJCE_P(container);
|
||||
|
||||
@@ -757,15 +757,13 @@ failure:
|
||||
|
||||
ZEND_API void zend_generator_resume(zend_generator *orig_generator) /* {{{ */
|
||||
{
|
||||
zend_generator *generator;
|
||||
zend_generator *generator = zend_generator_get_current(orig_generator);
|
||||
|
||||
/* The generator is already closed, thus can't resume */
|
||||
if (UNEXPECTED(!orig_generator->execute_data)) {
|
||||
if (UNEXPECTED(!generator->execute_data)) {
|
||||
return;
|
||||
}
|
||||
|
||||
generator = zend_generator_get_current(orig_generator);
|
||||
|
||||
try_again:
|
||||
if (generator->flags & ZEND_GENERATOR_CURRENTLY_RUNNING) {
|
||||
zend_throw_error(NULL, "Cannot resume an already running generator");
|
||||
|
||||
@@ -279,7 +279,6 @@ static uint32_t zend_array_recalc_elements(HashTable *ht)
|
||||
uint32_t num = ht->nNumOfElements;
|
||||
|
||||
ZEND_HASH_FOREACH_VAL(ht, val) {
|
||||
if (Z_TYPE_P(val) == IS_UNDEF) continue;
|
||||
if (Z_TYPE_P(val) == IS_INDIRECT) {
|
||||
if (UNEXPECTED(Z_TYPE_P(Z_INDIRECT_P(val)) == IS_UNDEF)) {
|
||||
num--;
|
||||
|
||||
+5
-1
@@ -337,7 +337,7 @@ static zend_always_inline int zend_hash_str_exists_ind(const HashTable *ht, cons
|
||||
Z_TYPE_P(Z_INDIRECT_P(zv)) != IS_UNDEF);
|
||||
}
|
||||
|
||||
static zend_always_inline zval *zend_symbtable_add_new(HashTable *ht, zend_string *key, zval *pData)
|
||||
static zend_always_inline zval *zend_symtable_add_new(HashTable *ht, zend_string *key, zval *pData)
|
||||
{
|
||||
zend_ulong idx;
|
||||
|
||||
@@ -348,6 +348,10 @@ static zend_always_inline zval *zend_symbtable_add_new(HashTable *ht, zend_strin
|
||||
}
|
||||
}
|
||||
|
||||
/* This typo snuck into 7.0.17 and 7.1.3, this define exists for BC */
|
||||
#define zend_symbtable_add_new(ht, key, pData) \
|
||||
zend_symtable_add_new(ht, key, pData)
|
||||
|
||||
static zend_always_inline zval *zend_symtable_update(HashTable *ht, zend_string *key, zval *pData)
|
||||
{
|
||||
zend_ulong idx;
|
||||
|
||||
@@ -55,7 +55,7 @@ static void zend_ini_do_op(char type, zval *result, zval *op1, zval *op2)
|
||||
int i_result;
|
||||
int i_op1, i_op2;
|
||||
int str_len;
|
||||
char str_result[MAX_LENGTH_OF_LONG];
|
||||
char str_result[MAX_LENGTH_OF_LONG+1];
|
||||
|
||||
i_op1 = atoi(Z_STRVAL_P(op1));
|
||||
zend_string_free(Z_STR_P(op1));
|
||||
|
||||
+194
-196
File diff suppressed because it is too large.
Load diff
@@ -1663,7 +1663,6 @@ NEWLINE ("\r"|"\n"|"\r\n")
|
||||
if (errno == ERANGE) { /* Overflow */
|
||||
errno = 0;
|
||||
if (yytext[0] == '0') { /* octal overflow */
|
||||
errno = 0;
|
||||
ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, (const char **)&end));
|
||||
} else {
|
||||
ZVAL_DOUBLE(zendlval, zend_strtod(yytext, (const char **)&end));
|
||||
@@ -1675,7 +1674,6 @@ NEWLINE ("\r"|"\n"|"\r\n")
|
||||
ZVAL_UNDEF(zendlval);
|
||||
RETURN_TOKEN(T_DNUMBER);
|
||||
}
|
||||
ZEND_ASSERT(!errno);
|
||||
RETURN_TOKEN(T_DNUMBER);
|
||||
}
|
||||
/* Also not an assert for the same reason */
|
||||
|
||||
@@ -122,11 +122,13 @@ struct _zend_module_dep {
|
||||
unsigned char type; /* dependency type */
|
||||
};
|
||||
|
||||
BEGIN_EXTERN_C()
|
||||
extern ZEND_API HashTable module_registry;
|
||||
|
||||
void module_destructor(zend_module_entry *module);
|
||||
int module_registry_request_startup(zend_module_entry *module);
|
||||
int module_registry_unload_temp(const zend_module_entry *module);
|
||||
END_EXTERN_C()
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
+60
-31
@@ -574,9 +574,10 @@ ZEND_API uint32_t *zend_get_property_guard(zend_object *zobj, zend_string *membe
|
||||
zval *zend_std_read_property(zval *object, zval *member, int type, void **cache_slot, zval *rv) /* {{{ */
|
||||
{
|
||||
zend_object *zobj;
|
||||
zval tmp_member;
|
||||
zval tmp_member, tmp_object;
|
||||
zval *retval;
|
||||
uint32_t property_offset;
|
||||
uint32_t *guard = NULL;
|
||||
|
||||
zobj = Z_OBJ_P(object);
|
||||
|
||||
@@ -609,12 +610,18 @@ zval *zend_std_read_property(zval *object, zval *member, int type, void **cache_
|
||||
goto exit;
|
||||
}
|
||||
|
||||
ZVAL_UNDEF(&tmp_object);
|
||||
|
||||
/* magic isset */
|
||||
if ((type == BP_VAR_IS) && zobj->ce->__isset) {
|
||||
zval tmp_object, tmp_result;
|
||||
uint32_t *guard = zend_get_property_guard(zobj, Z_STR_P(member));
|
||||
zval tmp_result;
|
||||
guard = zend_get_property_guard(zobj, Z_STR_P(member));
|
||||
|
||||
if (!((*guard) & IN_ISSET)) {
|
||||
if (Z_TYPE(tmp_member) == IS_UNDEF) {
|
||||
ZVAL_COPY(&tmp_member, member);
|
||||
member = &tmp_member;
|
||||
}
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
ZVAL_UNDEF(&tmp_result);
|
||||
|
||||
@@ -629,19 +636,20 @@ zval *zend_std_read_property(zval *object, zval *member, int type, void **cache_
|
||||
goto exit;
|
||||
}
|
||||
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
zval_ptr_dtor(&tmp_result);
|
||||
}
|
||||
}
|
||||
|
||||
/* magic get */
|
||||
if (zobj->ce->__get) {
|
||||
uint32_t *guard = zend_get_property_guard(zobj, Z_STR_P(member));
|
||||
if (guard == NULL) {
|
||||
guard = zend_get_property_guard(zobj, Z_STR_P(member));
|
||||
}
|
||||
if (!((*guard) & IN_GET)) {
|
||||
zval tmp_object;
|
||||
|
||||
/* have getter - try with it! */
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
if (Z_TYPE(tmp_object) == IS_UNDEF) {
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
}
|
||||
*guard |= IN_GET; /* prevent circular getting */
|
||||
zend_std_call_getter(&tmp_object, member, rv);
|
||||
*guard &= ~IN_GET;
|
||||
@@ -661,6 +669,7 @@ zval *zend_std_read_property(zval *object, zval *member, int type, void **cache_
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
goto exit;
|
||||
} else {
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
if (Z_STRVAL_P(member)[0] == '\0' && Z_STRLEN_P(member) != 0) {
|
||||
zend_throw_error(NULL, "Cannot access property started with '\\0'");
|
||||
retval = &EG(uninitialized_zval);
|
||||
@@ -668,6 +677,9 @@ zval *zend_std_read_property(zval *object, zval *member, int type, void **cache_
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
|
||||
if ((type != BP_VAR_IS)) {
|
||||
zend_error(E_NOTICE,"Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), Z_STRVAL_P(member));
|
||||
}
|
||||
@@ -778,34 +790,38 @@ exit:
|
||||
zval *zend_std_read_dimension(zval *object, zval *offset, int type, zval *rv) /* {{{ */
|
||||
{
|
||||
zend_class_entry *ce = Z_OBJCE_P(object);
|
||||
zval tmp;
|
||||
zval tmp_offset, tmp_object;
|
||||
|
||||
if (EXPECTED(instanceof_function_ex(ce, zend_ce_arrayaccess, 1) != 0)) {
|
||||
if (offset == NULL) {
|
||||
/* [] construct */
|
||||
ZVAL_NULL(&tmp);
|
||||
offset = &tmp;
|
||||
ZVAL_NULL(&tmp_offset);
|
||||
} else {
|
||||
SEPARATE_ARG_IF_REF(offset);
|
||||
ZVAL_DEREF(offset);
|
||||
ZVAL_COPY(&tmp_offset, offset);
|
||||
}
|
||||
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
if (type == BP_VAR_IS) {
|
||||
zend_call_method_with_1_params(object, ce, NULL, "offsetexists", rv, offset);
|
||||
zend_call_method_with_1_params(&tmp_object, ce, NULL, "offsetexists", rv, &tmp_offset);
|
||||
if (UNEXPECTED(Z_ISUNDEF_P(rv))) {
|
||||
zval_ptr_dtor(offset);
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
zval_ptr_dtor(&tmp_offset);
|
||||
return NULL;
|
||||
}
|
||||
if (!i_zend_is_true(rv)) {
|
||||
zval_ptr_dtor(offset);
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
zval_ptr_dtor(&tmp_offset);
|
||||
zval_ptr_dtor(rv);
|
||||
return &EG(uninitialized_zval);
|
||||
}
|
||||
zval_ptr_dtor(rv);
|
||||
}
|
||||
|
||||
zend_call_method_with_1_params(object, ce, NULL, "offsetget", rv, offset);
|
||||
zend_call_method_with_1_params(&tmp_object, ce, NULL, "offsetget", rv, &tmp_offset);
|
||||
|
||||
zval_ptr_dtor(offset);
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
zval_ptr_dtor(&tmp_offset);
|
||||
|
||||
if (UNEXPECTED(Z_TYPE_P(rv) == IS_UNDEF)) {
|
||||
if (UNEXPECTED(!EG(exception))) {
|
||||
@@ -824,17 +840,19 @@ zval *zend_std_read_dimension(zval *object, zval *offset, int type, zval *rv) /*
|
||||
static void zend_std_write_dimension(zval *object, zval *offset, zval *value) /* {{{ */
|
||||
{
|
||||
zend_class_entry *ce = Z_OBJCE_P(object);
|
||||
zval tmp;
|
||||
zval tmp_offset, tmp_object;
|
||||
|
||||
if (EXPECTED(instanceof_function_ex(ce, zend_ce_arrayaccess, 1) != 0)) {
|
||||
if (!offset) {
|
||||
ZVAL_NULL(&tmp);
|
||||
offset = &tmp;
|
||||
ZVAL_NULL(&tmp_offset);
|
||||
} else {
|
||||
SEPARATE_ARG_IF_REF(offset);
|
||||
ZVAL_DEREF(offset);
|
||||
ZVAL_COPY(&tmp_offset, offset);
|
||||
}
|
||||
zend_call_method_with_2_params(object, ce, NULL, "offsetset", NULL, offset, value);
|
||||
zval_ptr_dtor(offset);
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
zend_call_method_with_2_params(&tmp_object, ce, NULL, "offsetset", NULL, &tmp_offset, value);
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
zval_ptr_dtor(&tmp_offset);
|
||||
} else {
|
||||
zend_throw_error(NULL, "Cannot use object of type %s as array", ZSTR_VAL(ce->name));
|
||||
}
|
||||
@@ -844,17 +862,19 @@ static void zend_std_write_dimension(zval *object, zval *offset, zval *value) /*
|
||||
static int zend_std_has_dimension(zval *object, zval *offset, int check_empty) /* {{{ */
|
||||
{
|
||||
zend_class_entry *ce = Z_OBJCE_P(object);
|
||||
zval retval;
|
||||
zval retval, tmp_offset, tmp_object;
|
||||
int result;
|
||||
|
||||
if (EXPECTED(instanceof_function_ex(ce, zend_ce_arrayaccess, 1) != 0)) {
|
||||
SEPARATE_ARG_IF_REF(offset);
|
||||
zend_call_method_with_1_params(object, ce, NULL, "offsetexists", &retval, offset);
|
||||
ZVAL_DEREF(offset);
|
||||
ZVAL_COPY(&tmp_offset, offset);
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
zend_call_method_with_1_params(&tmp_object, ce, NULL, "offsetexists", &retval, &tmp_offset);
|
||||
if (EXPECTED(Z_TYPE(retval) != IS_UNDEF)) {
|
||||
result = i_zend_is_true(&retval);
|
||||
zval_ptr_dtor(&retval);
|
||||
if (check_empty && result && EXPECTED(!EG(exception))) {
|
||||
zend_call_method_with_1_params(object, ce, NULL, "offsetget", &retval, offset);
|
||||
zend_call_method_with_1_params(&tmp_object, ce, NULL, "offsetget", &retval, &tmp_offset);
|
||||
if (EXPECTED(Z_TYPE(retval) != IS_UNDEF)) {
|
||||
result = i_zend_is_true(&retval);
|
||||
zval_ptr_dtor(&retval);
|
||||
@@ -863,7 +883,8 @@ static int zend_std_has_dimension(zval *object, zval *offset, int check_empty) /
|
||||
} else {
|
||||
result = 0;
|
||||
}
|
||||
zval_ptr_dtor(offset);
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
zval_ptr_dtor(&tmp_offset);
|
||||
} else {
|
||||
zend_throw_error(NULL, "Cannot use object of type %s as array", ZSTR_VAL(ce->name));
|
||||
return 0;
|
||||
@@ -1020,11 +1041,15 @@ exit:
|
||||
static void zend_std_unset_dimension(zval *object, zval *offset) /* {{{ */
|
||||
{
|
||||
zend_class_entry *ce = Z_OBJCE_P(object);
|
||||
zval tmp_offset, tmp_object;
|
||||
|
||||
if (instanceof_function_ex(ce, zend_ce_arrayaccess, 1)) {
|
||||
SEPARATE_ARG_IF_REF(offset);
|
||||
zend_call_method_with_1_params(object, ce, NULL, "offsetunset", NULL, offset);
|
||||
zval_ptr_dtor(offset);
|
||||
ZVAL_DEREF(offset);
|
||||
ZVAL_COPY(&tmp_offset, offset);
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
zend_call_method_with_1_params(&tmp_object, ce, NULL, "offsetunset", NULL, &tmp_offset);
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
zval_ptr_dtor(&tmp_offset);
|
||||
} else {
|
||||
zend_throw_error(NULL, "Cannot use object of type %s as array", ZSTR_VAL(ce->name));
|
||||
}
|
||||
@@ -1578,6 +1603,10 @@ found:
|
||||
zval tmp_object;
|
||||
|
||||
/* have issetter - try with it! */
|
||||
if (Z_TYPE(tmp_member) == IS_UNDEF) {
|
||||
ZVAL_COPY(&tmp_member, member);
|
||||
member = &tmp_member;
|
||||
}
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
(*guard) |= IN_ISSET; /* prevent circular getting */
|
||||
zend_std_call_issetter(&tmp_object, member, &rv);
|
||||
|
||||
@@ -155,12 +155,12 @@ struct _zend_object_handlers {
|
||||
zend_object_compare_zvals_t compare;
|
||||
};
|
||||
|
||||
BEGIN_EXTERN_C()
|
||||
extern ZEND_API zend_object_handlers std_object_handlers;
|
||||
|
||||
#define zend_get_function_root_class(fbc) \
|
||||
((fbc)->common.prototype ? (fbc)->common.prototype->common.scope : (fbc)->common.scope)
|
||||
|
||||
BEGIN_EXTERN_C()
|
||||
ZEND_API union _zend_function *zend_std_get_static_method(zend_class_entry *ce, zend_string *function_name_strval, const zval *key);
|
||||
ZEND_API zval *zend_std_get_static_property(zend_class_entry *ce, zend_string *property_name, zend_bool silent);
|
||||
ZEND_API ZEND_COLD zend_bool zend_std_unset_static_property(zend_class_entry *ce, zend_string *property_name);
|
||||
|
||||
@@ -222,8 +222,10 @@ ZEND_API void ZEND_FASTCALL convert_scalar_to_number(zval *op) /* {{{ */
|
||||
if (Z_TYPE(holder) == IS_LONG) { \
|
||||
if (op == result) { \
|
||||
zval_ptr_dtor(op); \
|
||||
ZVAL_LONG(op, Z_LVAL(holder)); \
|
||||
} else { \
|
||||
(op) = &(holder); \
|
||||
} \
|
||||
(op) = &(holder); \
|
||||
} \
|
||||
break; \
|
||||
} \
|
||||
|
||||
@@ -433,7 +433,7 @@ char *alloca();
|
||||
#define ZEND_STRL(str) (str), (sizeof(str)-1)
|
||||
#define ZEND_STRS(str) (str), (sizeof(str))
|
||||
#define ZEND_NORMALIZE_BOOL(n) \
|
||||
((n) ? (((n)>0) ? 1 : -1) : 0)
|
||||
((n) ? (((n)<0) ? -1 : 1) : 0)
|
||||
#define ZEND_TRUTH(x) ((x) ? 1 : 0)
|
||||
#define ZEND_LOG_XOR(a, b) (ZEND_TRUTH(a) ^ ZEND_TRUTH(b))
|
||||
|
||||
|
||||
@@ -72,6 +72,10 @@ typedef unsigned long int uint32_t;
|
||||
#define NO_INFNAN_CHECK
|
||||
#endif
|
||||
|
||||
#ifndef NO_ERRNO
|
||||
#define NO_ERRNO
|
||||
#endif
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define IEEE_BIG_ENDIAN 1
|
||||
#else
|
||||
|
||||
@@ -167,8 +167,10 @@ ZEND_API void ZEND_FASTCALL _zval_copy_ctor_func(zval *zvalue ZEND_FILE_LINE_DC)
|
||||
{
|
||||
if (EXPECTED(Z_TYPE_P(zvalue) == IS_ARRAY)) {
|
||||
ZVAL_ARR(zvalue, zend_array_dup(Z_ARRVAL_P(zvalue)));
|
||||
} else if (EXPECTED(Z_TYPE_P(zvalue) == IS_STRING) ||
|
||||
EXPECTED(Z_TYPE_P(zvalue) == IS_CONSTANT)) {
|
||||
} else if (EXPECTED(Z_TYPE_P(zvalue) == IS_STRING)) {
|
||||
CHECK_ZVAL_STRING_REL(Z_STR_P(zvalue));
|
||||
ZVAL_NEW_STR(zvalue, zend_string_dup(Z_STR_P(zvalue), 0));
|
||||
} else if (EXPECTED(Z_TYPE_P(zvalue) == IS_CONSTANT)) {
|
||||
CHECK_ZVAL_STRING_REL(Z_STR_P(zvalue));
|
||||
Z_STR_P(zvalue) = zend_string_dup(Z_STR_P(zvalue), 0);
|
||||
} else if (EXPECTED(Z_TYPE_P(zvalue) == IS_CONSTANT_AST)) {
|
||||
|
||||
+13
-4
@@ -445,11 +445,15 @@ static void cwd_globals_dtor(virtual_cwd_globals *cwd_g) /* {{{ */
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
CWD_API void virtual_cwd_startup(void) /* {{{ */
|
||||
void virtual_cwd_main_cwd_init(uint8_t reinit) /* {{{ */
|
||||
{
|
||||
char cwd[MAXPATHLEN];
|
||||
char *result;
|
||||
|
||||
if (reinit) {
|
||||
free(main_cwd_state.cwd);
|
||||
}
|
||||
|
||||
#ifdef NETWARE
|
||||
result = getcwdpath(cwd, NULL, 1);
|
||||
if(result)
|
||||
@@ -461,10 +465,10 @@ CWD_API void virtual_cwd_startup(void) /* {{{ */
|
||||
++c;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#ifdef ZEND_WIN32
|
||||
#elif defined(ZEND_WIN32)
|
||||
ZeroMemory(&cwd, sizeof(cwd));
|
||||
#endif
|
||||
result = php_win32_ioutil_getcwd(cwd, sizeof(cwd));
|
||||
#else
|
||||
result = getcwd(cwd, sizeof(cwd));
|
||||
#endif
|
||||
if (!result) {
|
||||
@@ -478,7 +482,12 @@ CWD_API void virtual_cwd_startup(void) /* {{{ */
|
||||
}
|
||||
#endif
|
||||
main_cwd_state.cwd = strdup(cwd);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
CWD_API void virtual_cwd_startup(void) /* {{{ */
|
||||
{
|
||||
virtual_cwd_main_cwd_init(0);
|
||||
#ifdef ZTS
|
||||
ts_allocate_id(&cwd_globals_id, sizeof(virtual_cwd_globals), (ts_allocate_ctor) cwd_globals_ctor, (ts_allocate_dtor) cwd_globals_dtor);
|
||||
#else
|
||||
|
||||
@@ -251,6 +251,10 @@ CWD_API zend_long realpath_cache_size(void);
|
||||
CWD_API zend_long realpath_cache_max_buckets(void);
|
||||
CWD_API realpath_cache_bucket** realpath_cache_get_buckets(void);
|
||||
|
||||
#ifdef CWD_EXPORTS
|
||||
extern void virtual_cwd_main_cwd_init(uint8_t);
|
||||
#endif
|
||||
|
||||
/* The actual macros to be used in programs using TSRM
|
||||
* If the program defines VIRTUAL_DIR it will use the
|
||||
* virtual_* functions
|
||||
|
||||
+1
-1
@@ -2687,7 +2687,7 @@ EOF
|
||||
done
|
||||
|
||||
echo "'[$]0' \\" >> $1
|
||||
if test `expr -- [$]0 : "'.*"` = 0; then
|
||||
if test `expr " [$]0" : " '.*"` = 0; then
|
||||
CONFIGURE_COMMAND="$CONFIGURE_COMMAND '[$]0'"
|
||||
else
|
||||
CONFIGURE_COMMAND="$CONFIGURE_COMMAND [$]0"
|
||||
|
||||
+11
-2
@@ -2,6 +2,7 @@
|
||||
|
||||
set SDK_REMOTE=https://github.com/OSTC/php-sdk-binary-tools.git
|
||||
set SDK_BRANCH=%PHP_BUILD_SDK_BRANCH%
|
||||
set SDK_RUNNER=%PHP_BUILD_CACHE_SDK_DIR%\phpsdk-vc14-%PLATFORM%.bat
|
||||
|
||||
if not exist "%PHP_BUILD_CACHE_BASE_DIR%" (
|
||||
echo Creating %PHP_BUILD_CACHE_BASE_DIR%
|
||||
@@ -13,17 +14,25 @@ if not exist "%PHP_BUILD_OBJ_DIR%" (
|
||||
mkdir "%PHP_BUILD_OBJ_DIR%"
|
||||
)
|
||||
|
||||
if not exist "%SDK_RUNNER%" (
|
||||
if exist "%PHP_BUILD_CACHE_SDK_DIR%" rmdir /s /q "%PHP_BUILD_CACHE_SDK_DIR%"
|
||||
)
|
||||
|
||||
if not exist "%PHP_BUILD_CACHE_SDK_DIR%" (
|
||||
echo Cloning remote SDK repository
|
||||
git clone --branch %SDK_BRANCH% %SDK_REMOTE% "%PHP_BUILD_CACHE_SDK_DIR%" 2>&1
|
||||
) else (
|
||||
)
|
||||
|
||||
for /f "tokens=*" %%a in ('type %PHP_BUILD_CACHE_SDK_DIR%\VERSION') do set GOT_SDK_VER=%%a
|
||||
echo Got SDK version %GOT_SDK_VER%
|
||||
if NOT "%GOT_SDK_VER%" == "%PHP_BUILD_SDK_BRANCH:~8%" (
|
||||
echo Switching to the configured SDK version %SDK_BRANCH:~8%
|
||||
echo Fetching remote SDK repository
|
||||
git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" fetch --prune origin 2>&1
|
||||
echo Checkout SDK repository branch
|
||||
git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" checkout --force %SDK_BRANCH%
|
||||
)
|
||||
|
||||
set SDK_RUNNER=%PHP_BUILD_CACHE_SDK_DIR%\phpsdk-vc14-%PLATFORM%.bat
|
||||
if not exist "%SDK_RUNNER%" (
|
||||
echo "%SDK_RUNNER%" doesn't exist
|
||||
exit /b 3
|
||||
|
||||
+12
-1
@@ -2,10 +2,14 @@
|
||||
|
||||
if "%APPVEYOR%" equ "True" rmdir /s /q C:\cygwin >NUL 2>NUL
|
||||
if %errorlevel% neq 0 exit /b 3
|
||||
if "%APPVEYOR%" equ "True" rmdir /s /q C:\cygwin64 >NUL 2>NUL
|
||||
if %errorlevel% neq 0 exit /b 3
|
||||
if "%APPVEYOR%" equ "True" rmdir /s /q C:\mingw >NUL 2>NUL
|
||||
if %errorlevel% neq 0 exit /b 3
|
||||
if "%APPVEYOR%" equ "True" rmdir /s /q C:\mingw-w64 >NUL 2>NUL
|
||||
if %errorlevel% neq 0 exit /b 3
|
||||
if "%APPVEYOR%" equ "True" rmdir /s /q C:\msys64 >NUL 2>NUL
|
||||
if %errorlevel% neq 0 exit /b 3
|
||||
|
||||
cd /D %APPVEYOR_BUILD_FOLDER%
|
||||
if %errorlevel% neq 0 exit /b 3
|
||||
@@ -22,12 +26,19 @@ echo Updating dependencies in %DEPS_DIR%
|
||||
cmd /c phpsdk_deps --update --no-backup --branch %BRANCH% --stability %STABILITY% --deps %DEPS_DIR%
|
||||
if %errorlevel% neq 0 exit /b 3
|
||||
|
||||
rem Something went wrong, most likely when concurrent builds were to fetch deps
|
||||
rem updates. It might be, that some locking mechanism is needed.
|
||||
if not exist "%DEPS_DIR%" (
|
||||
cmd /c phpsdk_deps --update --force --no-backup --branch %BRANCH% --stability %STABILITY% --deps %DEPS_DIR%
|
||||
)
|
||||
if %errorlevel% neq 0 exit /b 3
|
||||
|
||||
cmd /c buildconf.bat --force
|
||||
if %errorlevel% neq 0 exit /b 3
|
||||
|
||||
if "%THREAD_SAFE%" equ "0" set ADD_CONF=--disable-zts
|
||||
|
||||
set EXT_EXCLUDE_FROM_TEST=snmp,oci8_12c,pdo_oci,pdo_odbc,odbc,pdo_firebird,interbase,ldap,imap,dba
|
||||
set EXT_EXCLUDE_FROM_TEST=snmp,oci8_12c,pdo_oci,pdo_odbc,odbc,pdo_firebird,interbase,ldap,imap,dba,ftp
|
||||
if "%OPCACHE%" equ "0" set EXT_EXCLUDE_FROM_TEST=%EXT_EXCLUDE_FROM_TEST%,opcache
|
||||
|
||||
cmd /c configure.bat ^
|
||||
|
||||
+2
-2
@@ -119,8 +119,8 @@ int zend_sprintf(char *buffer, const char *format, ...);
|
||||
|
||||
PHP_MAJOR_VERSION=7
|
||||
PHP_MINOR_VERSION=1
|
||||
PHP_RELEASE_VERSION=7
|
||||
PHP_EXTRA_VERSION="-dev"
|
||||
PHP_RELEASE_VERSION=12
|
||||
PHP_EXTRA_VERSION=""
|
||||
PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
|
||||
PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ bc_divmod (bc_num num1, bc_num num2, bc_num *quot, bc_num *rem, int scale)
|
||||
bc_init_num(&temp);
|
||||
|
||||
/* Calculate it. */
|
||||
bc_divide (num1, num2, &temp, scale);
|
||||
bc_divide (num1, num2, &temp, 0);
|
||||
if (quot)
|
||||
quotient = bc_copy_num (temp);
|
||||
bc_multiply (temp, num2, &temp, rscale);
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
int
|
||||
bc_raisemod (bc_num base, bc_num expo, bc_num mod, bc_num *result, int scale)
|
||||
{
|
||||
bc_num power, exponent, parity, temp;
|
||||
bc_num power, exponent, modulus, parity, temp;
|
||||
int rscale;
|
||||
|
||||
/* Check for correct numbers. */
|
||||
@@ -55,12 +55,16 @@ bc_raisemod (bc_num base, bc_num expo, bc_num mod, bc_num *result, int scale)
|
||||
/* Set initial values. */
|
||||
power = bc_copy_num (base);
|
||||
exponent = bc_copy_num (expo);
|
||||
modulus = bc_copy_num (mod);
|
||||
temp = bc_copy_num (BCG(_one_));
|
||||
bc_init_num(&parity);
|
||||
|
||||
/* Check the base for scale digits. */
|
||||
if (base->n_scale != 0)
|
||||
if (power->n_scale != 0)
|
||||
{
|
||||
bc_rt_warn ("non-zero scale in base");
|
||||
bc_divide (power, BCG(_one_), &power, 0); /*truncate */
|
||||
}
|
||||
|
||||
/* Check the exponent for scale digits. */
|
||||
if (exponent->n_scale != 0)
|
||||
@@ -70,27 +74,38 @@ bc_raisemod (bc_num base, bc_num expo, bc_num mod, bc_num *result, int scale)
|
||||
}
|
||||
|
||||
/* Check the modulus for scale digits. */
|
||||
if (mod->n_scale != 0)
|
||||
if (modulus->n_scale != 0)
|
||||
{
|
||||
bc_rt_warn ("non-zero scale in modulus");
|
||||
bc_divide (modulus, BCG(_one_), &modulus, 0); /*truncate */
|
||||
}
|
||||
|
||||
/* Do the calculation. */
|
||||
rscale = MAX(scale, base->n_scale);
|
||||
while ( !bc_is_zero(exponent) )
|
||||
rscale = MAX(scale, power->n_scale);
|
||||
if ( !bc_compare(modulus, BCG(_one_)) )
|
||||
{
|
||||
(void) bc_divmod (exponent, BCG(_two_), &exponent, &parity, 0);
|
||||
if ( !bc_is_zero(parity) )
|
||||
temp = bc_new_num (1, scale);
|
||||
}
|
||||
else
|
||||
{
|
||||
while ( !bc_is_zero(exponent) )
|
||||
{
|
||||
bc_multiply (temp, power, &temp, rscale);
|
||||
(void) bc_modulo (temp, mod, &temp, scale);
|
||||
}
|
||||
(void) bc_divmod (exponent, BCG(_two_), &exponent, &parity, 0);
|
||||
if ( !bc_is_zero(parity) )
|
||||
{
|
||||
bc_multiply (temp, power, &temp, rscale);
|
||||
(void) bc_modulo (temp, modulus, &temp, scale);
|
||||
}
|
||||
|
||||
bc_multiply (power, power, &power, rscale);
|
||||
(void) bc_modulo (power, mod, &power, scale);
|
||||
bc_multiply (power, power, &power, rscale);
|
||||
(void) bc_modulo (power, modulus, &power, scale);
|
||||
}
|
||||
}
|
||||
|
||||
/* Assign the value. */
|
||||
bc_free_num (&power);
|
||||
bc_free_num (&exponent);
|
||||
bc_free_num (&modulus);
|
||||
bc_free_num (result);
|
||||
bc_free_num (&parity);
|
||||
*result = temp;
|
||||
|
||||
@@ -105,5 +105,8 @@ bc_str2num (bc_num *num, char *str, int scale)
|
||||
for (;strscale > 0; strscale--)
|
||||
*nptr++ = CH_VAL(*ptr++);
|
||||
}
|
||||
|
||||
if (bc_is_zero (*num))
|
||||
(*num)->n_sign = PLUS;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
--TEST--
|
||||
Bug #44995 (bcpowmod() fails if scale != 0)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('bcmath')) die('skip bcmath extension not available');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(bcpowmod('4', '4', '3', 1));
|
||||
var_dump(bcpowmod('3234', '32345', '22345', 1));
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECT--
|
||||
string(3) "1.0"
|
||||
string(7) "17334.0"
|
||||
===DONE===
|
||||
@@ -0,0 +1,16 @@
|
||||
--TEST--
|
||||
Bug #46781 (BC math handles minus zero incorrectly)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('bcmath')) die('skip bcmath extension is not available');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(bcadd('-0.0', '-0.0', 1));
|
||||
var_dump(bccomp('-0.0', '0', 1));
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECT--
|
||||
string(3) "0.0"
|
||||
int(0)
|
||||
===DONE===
|
||||
@@ -0,0 +1,16 @@
|
||||
--TEST--
|
||||
Bug #54598 (bcpowmod() may return 1 if modulus is 1)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('bcmath')) die('skip bcmath extension is not available');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(bcpowmod(5, 0, 1));
|
||||
var_dump(bcpowmod(5, 0, 1, 3));
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECT--
|
||||
string(1) "0"
|
||||
string(5) "0.000"
|
||||
===DONE===
|
||||
@@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
Bug #75178 (bcpowmod() misbehaves for non-integer base or modulus)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('bcmath')) die('skip bcmath extension is not available');
|
||||
if (substr(PHP_OS, 0, 3) != 'WIN') {
|
||||
die('skip valid only for windows');
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(bcpowmod('4.1', '4', '3', 3));
|
||||
var_dump(bcpowmod('4', '4', '3.1', 3));
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECT--
|
||||
string(5) "1.000"
|
||||
string(5) "1.000"
|
||||
===DONE===
|
||||
bc math warning: non-zero scale in base
|
||||
bc math warning: non-zero scale in modulus
|
||||
@@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
Bug #75178 (bcpowmod() misbehaves for non-integer base or modulus)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('bcmath')) die('skip bcmath extension is not available');
|
||||
if (substr(PHP_OS, 0, 3) == 'WIN') {
|
||||
die('skip Not valid for windows');
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(bcpowmod('4.1', '4', '3', 3));
|
||||
var_dump(bcpowmod('4', '4', '3.1', 3));
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECT--
|
||||
bc math warning: non-zero scale in base
|
||||
string(5) "1.000"
|
||||
bc math warning: non-zero scale in modulus
|
||||
string(5) "1.000"
|
||||
===DONE===
|
||||
+23
-4
@@ -17,12 +17,24 @@ if test "$PHP_CURL" != "no"; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$CURL_DIR"; then
|
||||
AC_MSG_RESULT(not found)
|
||||
if which dpkg-architecture>/dev/null; then
|
||||
AC_MSG_CHECKING(for cURL in multiarch path)
|
||||
CURL_MULTIARCH_INCLUDE=/usr/include/$(dpkg-architecture -qDEB_HOST_MULTIARCH)
|
||||
if test -r $CURL_MULTIARCH_INCLUDE/curl/easy.h; then
|
||||
CURL_DIR=/usr
|
||||
AC_MSG_RESULT(found in $CURL_MULTIARCH_INCLUDE)
|
||||
else
|
||||
AC_MSG_RESULT(not found)
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$CURL_DIR"; then
|
||||
AC_MSG_RESULT(not found)
|
||||
AC_MSG_ERROR(Please reinstall the libcurl distribution -
|
||||
easy.h should be in <curl-dir>/include/curl/)
|
||||
AC_MSG_ERROR(Could not find cURL, please reinstall the libcurl distribution -dnl
|
||||
easy.h should be in <curl-dir>/include/curl/)
|
||||
fi
|
||||
|
||||
CURL_CONFIG="curl-config"
|
||||
@@ -45,7 +57,11 @@ if test "$PHP_CURL" != "no"; then
|
||||
AC_MSG_ERROR(cURL version 7.10.5 or later is required to compile php with cURL support)
|
||||
fi
|
||||
|
||||
PHP_ADD_INCLUDE($CURL_DIR/include)
|
||||
if test -z "$CURL_MULTIARCH_INCLUDE"; then
|
||||
PHP_ADD_INCLUDE($CURL_DIR/include)
|
||||
else
|
||||
PHP_ADD_INCLUDE($CURL_MULTIARCH_INCLUDE)
|
||||
fi
|
||||
PHP_EVAL_LIBLINE($CURL_LIBS, CURL_SHARED_LIBADD)
|
||||
PHP_ADD_LIBRARY_WITH_PATH(curl, $CURL_DIR/$PHP_LIBDIR, CURL_SHARED_LIBADD)
|
||||
|
||||
@@ -57,6 +73,8 @@ if test "$PHP_CURL" != "no"; then
|
||||
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="`$CURL_CONFIG --cflags`"
|
||||
save_LDFLAGS="$LDFLAGS"
|
||||
LDFLAGS="`$CURL_CONFIG --libs`"
|
||||
|
||||
AC_PROG_CPP
|
||||
AC_MSG_CHECKING([for openssl support in libcurl])
|
||||
@@ -114,6 +132,7 @@ int main(int argc, char *argv[])
|
||||
])
|
||||
|
||||
CFLAGS="$save_CFLAGS"
|
||||
LDFLAGS="$save_LDFLAGS"
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
|
||||
+7552
-6811
File diff suppressed because it is too large.
Load diff
@@ -913,7 +913,7 @@ datefull = day ([ \t.-])* monthtext ([ \t.-])* year;
|
||||
datenoday = monthtext ([ .\t-])* year4;
|
||||
datenodayrev = year4 ([ .\t-])* monthtext;
|
||||
datetextual = monthtext ([ .\t-])* day [,.stndrh\t ]+ year;
|
||||
datenoyear = monthtext ([ .\t-])* day [,.stndrh\t ]*;
|
||||
datenoyear = monthtext ([ .\t-])* day ([,.stndrh\t ]+|[\000]);
|
||||
datenoyearrev = day ([ .\t-])* monthtext;
|
||||
datenocolon = year4 monthlz daylz;
|
||||
|
||||
@@ -931,8 +931,8 @@ isoweek = year4 "-"? "W" weekofyear;
|
||||
exif = year4 ":" monthlz ":" daylz " " hour24lz ":" minutelz ":" secondlz;
|
||||
firstdayof = 'first day of';
|
||||
lastdayof = 'last day of';
|
||||
backof = 'back of ' hour24 space? meridian?;
|
||||
frontof = 'front of ' hour24 space? meridian?;
|
||||
backof = 'back of ' hour24 (space? meridian)?;
|
||||
frontof = 'front of ' hour24 (space? meridian)?;
|
||||
|
||||
/* Common Log Format: 10/Oct/2000:13:55:36 -0700 */
|
||||
clf = day "/" monthabbr "/" year4 ":" hour24lz ":" minutelz ":" secondlz space tzcorrection;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Generated by re2c 0.13.5 on Thu Aug 13 10:30:12 2015 */
|
||||
/* Generated by re2c 0.15.3 on Wed Aug 16 15:55:55 2017 */
|
||||
#line 1 "ext/date/lib/parse_iso_intervals.re"
|
||||
/*
|
||||
* The MIT License (MIT)
|
||||
@@ -258,45 +258,45 @@ std:
|
||||
|
||||
|
||||
|
||||
#line 262 "ext/date/lib/parse_iso_intervals.c"
|
||||
#line 262 "<stdout>"
|
||||
{
|
||||
YYCTYPE yych;
|
||||
unsigned int yyaccept = 0;
|
||||
static const unsigned char yybm[] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
128, 128, 128, 128, 128, 128, 128, 128,
|
||||
128, 128, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
|
||||
YYDEBUG(0, *YYCURSOR);
|
||||
if ((YYLIMIT - YYCURSOR) < 20) YYFILL(20);
|
||||
yych = *YYCURSOR;
|
||||
if (yych <= ',') {
|
||||
@@ -321,29 +321,34 @@ std:
|
||||
if (yych != 'R') goto yy11;
|
||||
}
|
||||
}
|
||||
YYDEBUG(2, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
if ((yych = *YYCURSOR) <= '/') goto yy3;
|
||||
if (yych <= '9') goto yy98;
|
||||
yy3:
|
||||
YYDEBUG(3, *YYCURSOR);
|
||||
#line 395 "ext/date/lib/parse_iso_intervals.re"
|
||||
{
|
||||
add_error(s, "Unexpected character");
|
||||
goto std;
|
||||
}
|
||||
#line 334 "ext/date/lib/parse_iso_intervals.c"
|
||||
#line 336 "<stdout>"
|
||||
yy4:
|
||||
YYDEBUG(4, *YYCURSOR);
|
||||
yyaccept = 0;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if (yych <= '/') goto yy3;
|
||||
if (yych <= '9') goto yy59;
|
||||
goto yy3;
|
||||
yy5:
|
||||
YYDEBUG(5, *YYCURSOR);
|
||||
yyaccept = 1;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if (yych <= '/') goto yy6;
|
||||
if (yych <= '9') goto yy12;
|
||||
if (yych == 'T') goto yy14;
|
||||
yy6:
|
||||
YYDEBUG(6, *YYCURSOR);
|
||||
#line 322 "ext/date/lib/parse_iso_intervals.re"
|
||||
{
|
||||
timelib_sll nr;
|
||||
@@ -385,26 +390,32 @@ yy6:
|
||||
TIMELIB_DEINIT;
|
||||
return TIMELIB_PERIOD;
|
||||
}
|
||||
#line 389 "ext/date/lib/parse_iso_intervals.c"
|
||||
#line 394 "<stdout>"
|
||||
yy7:
|
||||
YYDEBUG(7, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYDEBUG(8, *YYCURSOR);
|
||||
#line 384 "ext/date/lib/parse_iso_intervals.re"
|
||||
{
|
||||
goto std;
|
||||
}
|
||||
#line 396 "ext/date/lib/parse_iso_intervals.c"
|
||||
#line 403 "<stdout>"
|
||||
yy9:
|
||||
YYDEBUG(9, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYDEBUG(10, *YYCURSOR);
|
||||
#line 389 "ext/date/lib/parse_iso_intervals.re"
|
||||
{
|
||||
s->pos = cursor; s->line++;
|
||||
goto std;
|
||||
}
|
||||
#line 404 "ext/date/lib/parse_iso_intervals.c"
|
||||
#line 413 "<stdout>"
|
||||
yy11:
|
||||
YYDEBUG(11, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
goto yy3;
|
||||
yy12:
|
||||
YYDEBUG(12, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= 'L') {
|
||||
if (yych <= '9') {
|
||||
@@ -421,13 +432,15 @@ yy12:
|
||||
}
|
||||
}
|
||||
yy13:
|
||||
YYDEBUG(13, *YYCURSOR);
|
||||
YYCURSOR = YYMARKER;
|
||||
if (yyaccept <= 0) {
|
||||
if (yyaccept == 0) {
|
||||
goto yy3;
|
||||
} else {
|
||||
goto yy6;
|
||||
}
|
||||
yy14:
|
||||
YYDEBUG(14, *YYCURSOR);
|
||||
yyaccept = 1;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if (yybm[0+yych] & 128) {
|
||||
@@ -435,9 +448,11 @@ yy14:
|
||||
}
|
||||
goto yy6;
|
||||
yy15:
|
||||
YYDEBUG(15, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(16, *YYCURSOR);
|
||||
if (yybm[0+yych] & 128) {
|
||||
goto yy15;
|
||||
}
|
||||
@@ -449,23 +464,28 @@ yy15:
|
||||
if (yych != 'S') goto yy13;
|
||||
}
|
||||
yy17:
|
||||
YYDEBUG(17, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
goto yy6;
|
||||
yy18:
|
||||
YYDEBUG(18, *YYCURSOR);
|
||||
yyaccept = 1;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if (yych <= '/') goto yy6;
|
||||
if (yych <= '9') goto yy22;
|
||||
goto yy6;
|
||||
yy19:
|
||||
YYDEBUG(19, *YYCURSOR);
|
||||
yyaccept = 1;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if (yych <= '/') goto yy6;
|
||||
if (yych >= ':') goto yy6;
|
||||
yy20:
|
||||
YYDEBUG(20, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(21, *YYCURSOR);
|
||||
if (yych <= 'L') {
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '9') goto yy20;
|
||||
@@ -476,18 +496,22 @@ yy20:
|
||||
goto yy13;
|
||||
}
|
||||
yy22:
|
||||
YYDEBUG(22, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(23, *YYCURSOR);
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '9') goto yy22;
|
||||
if (yych == 'S') goto yy17;
|
||||
goto yy13;
|
||||
yy24:
|
||||
YYDEBUG(24, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych == 'T') goto yy14;
|
||||
goto yy6;
|
||||
yy25:
|
||||
YYDEBUG(25, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= 'L') {
|
||||
if (yych <= '9') {
|
||||
@@ -507,6 +531,7 @@ yy25:
|
||||
}
|
||||
}
|
||||
yy26:
|
||||
YYDEBUG(26, *YYCURSOR);
|
||||
yyaccept = 1;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if (yych <= '/') goto yy6;
|
||||
@@ -514,6 +539,7 @@ yy26:
|
||||
if (yych == 'T') goto yy14;
|
||||
goto yy6;
|
||||
yy27:
|
||||
YYDEBUG(27, *YYCURSOR);
|
||||
yyaccept = 1;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if (yych <= '/') goto yy6;
|
||||
@@ -521,6 +547,7 @@ yy27:
|
||||
if (yych == 'T') goto yy14;
|
||||
goto yy6;
|
||||
yy28:
|
||||
YYDEBUG(28, *YYCURSOR);
|
||||
yyaccept = 1;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if (yych <= '/') goto yy6;
|
||||
@@ -528,9 +555,11 @@ yy28:
|
||||
if (yych == 'T') goto yy14;
|
||||
goto yy6;
|
||||
yy29:
|
||||
YYDEBUG(29, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(30, *YYCURSOR);
|
||||
if (yych <= 'D') {
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '9') goto yy29;
|
||||
@@ -546,9 +575,11 @@ yy29:
|
||||
}
|
||||
}
|
||||
yy31:
|
||||
YYDEBUG(31, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(32, *YYCURSOR);
|
||||
if (yych <= 'C') {
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '9') goto yy31;
|
||||
@@ -559,14 +590,17 @@ yy31:
|
||||
goto yy13;
|
||||
}
|
||||
yy33:
|
||||
YYDEBUG(33, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(34, *YYCURSOR);
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '9') goto yy33;
|
||||
if (yych == 'D') goto yy24;
|
||||
goto yy13;
|
||||
yy35:
|
||||
YYDEBUG(35, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= 'L') {
|
||||
if (yych <= '9') {
|
||||
@@ -585,18 +619,22 @@ yy35:
|
||||
goto yy13;
|
||||
}
|
||||
}
|
||||
YYDEBUG(36, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych != '-') goto yy39;
|
||||
YYDEBUG(37, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '0') goto yy40;
|
||||
if (yych <= '1') goto yy41;
|
||||
goto yy13;
|
||||
yy38:
|
||||
YYDEBUG(38, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
|
||||
yych = *YYCURSOR;
|
||||
yy39:
|
||||
YYDEBUG(39, *YYCURSOR);
|
||||
if (yych <= 'L') {
|
||||
if (yych <= '9') {
|
||||
if (yych <= '/') goto yy13;
|
||||
@@ -616,17 +654,21 @@ yy39:
|
||||
}
|
||||
}
|
||||
yy40:
|
||||
YYDEBUG(40, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '9') goto yy42;
|
||||
goto yy13;
|
||||
yy41:
|
||||
YYDEBUG(41, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= '3') goto yy13;
|
||||
yy42:
|
||||
YYDEBUG(42, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych != '-') goto yy13;
|
||||
YYDEBUG(43, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '0') goto yy44;
|
||||
@@ -634,54 +676,69 @@ yy42:
|
||||
if (yych <= '3') goto yy46;
|
||||
goto yy13;
|
||||
yy44:
|
||||
YYDEBUG(44, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '9') goto yy47;
|
||||
goto yy13;
|
||||
yy45:
|
||||
YYDEBUG(45, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '9') goto yy47;
|
||||
goto yy13;
|
||||
yy46:
|
||||
YYDEBUG(46, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= '2') goto yy13;
|
||||
yy47:
|
||||
YYDEBUG(47, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych != 'T') goto yy13;
|
||||
YYDEBUG(48, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '1') goto yy49;
|
||||
if (yych <= '2') goto yy50;
|
||||
goto yy13;
|
||||
yy49:
|
||||
YYDEBUG(49, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '9') goto yy51;
|
||||
goto yy13;
|
||||
yy50:
|
||||
YYDEBUG(50, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= '5') goto yy13;
|
||||
yy51:
|
||||
YYDEBUG(51, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych != ':') goto yy13;
|
||||
YYDEBUG(52, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= '6') goto yy13;
|
||||
YYDEBUG(53, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= ':') goto yy13;
|
||||
YYDEBUG(54, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych != ':') goto yy13;
|
||||
YYDEBUG(55, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= '6') goto yy13;
|
||||
YYDEBUG(56, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= ':') goto yy13;
|
||||
YYDEBUG(57, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYDEBUG(58, *YYCURSOR);
|
||||
#line 364 "ext/date/lib/parse_iso_intervals.re"
|
||||
{
|
||||
DEBUG_OUTPUT("combinedrep");
|
||||
@@ -701,14 +758,17 @@ yy51:
|
||||
TIMELIB_DEINIT;
|
||||
return TIMELIB_PERIOD;
|
||||
}
|
||||
#line 705 "ext/date/lib/parse_iso_intervals.c"
|
||||
#line 762 "<stdout>"
|
||||
yy59:
|
||||
YYDEBUG(59, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= ':') goto yy13;
|
||||
YYDEBUG(60, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= ':') goto yy13;
|
||||
YYDEBUG(61, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') {
|
||||
if (yych == '-') goto yy64;
|
||||
@@ -719,33 +779,40 @@ yy59:
|
||||
goto yy13;
|
||||
}
|
||||
yy62:
|
||||
YYDEBUG(62, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '0') goto yy13;
|
||||
if (yych <= '9') goto yy85;
|
||||
goto yy13;
|
||||
yy63:
|
||||
YYDEBUG(63, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '2') goto yy85;
|
||||
goto yy13;
|
||||
yy64:
|
||||
YYDEBUG(64, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '0') goto yy65;
|
||||
if (yych <= '1') goto yy66;
|
||||
goto yy13;
|
||||
yy65:
|
||||
YYDEBUG(65, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '0') goto yy13;
|
||||
if (yych <= '9') goto yy67;
|
||||
goto yy13;
|
||||
yy66:
|
||||
YYDEBUG(66, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= '3') goto yy13;
|
||||
yy67:
|
||||
YYDEBUG(67, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych != '-') goto yy13;
|
||||
YYDEBUG(68, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '0') goto yy69;
|
||||
@@ -753,57 +820,73 @@ yy67:
|
||||
if (yych <= '3') goto yy71;
|
||||
goto yy13;
|
||||
yy69:
|
||||
YYDEBUG(69, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '0') goto yy13;
|
||||
if (yych <= '9') goto yy72;
|
||||
goto yy13;
|
||||
yy70:
|
||||
YYDEBUG(70, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '9') goto yy72;
|
||||
goto yy13;
|
||||
yy71:
|
||||
YYDEBUG(71, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= '2') goto yy13;
|
||||
yy72:
|
||||
YYDEBUG(72, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych != 'T') goto yy13;
|
||||
YYDEBUG(73, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '1') goto yy74;
|
||||
if (yych <= '2') goto yy75;
|
||||
goto yy13;
|
||||
yy74:
|
||||
YYDEBUG(74, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '9') goto yy76;
|
||||
goto yy13;
|
||||
yy75:
|
||||
YYDEBUG(75, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= '5') goto yy13;
|
||||
yy76:
|
||||
YYDEBUG(76, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych != ':') goto yy13;
|
||||
YYDEBUG(77, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= '6') goto yy13;
|
||||
YYDEBUG(78, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= ':') goto yy13;
|
||||
YYDEBUG(79, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych != ':') goto yy13;
|
||||
YYDEBUG(80, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= '6') goto yy13;
|
||||
YYDEBUG(81, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= ':') goto yy13;
|
||||
YYDEBUG(82, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych != 'Z') goto yy13;
|
||||
yy83:
|
||||
YYDEBUG(83, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYDEBUG(84, *YYCURSOR);
|
||||
#line 298 "ext/date/lib/parse_iso_intervals.re"
|
||||
{
|
||||
timelib_time *current;
|
||||
@@ -827,8 +910,9 @@ yy83:
|
||||
TIMELIB_DEINIT;
|
||||
return TIMELIB_ISO_DATE;
|
||||
}
|
||||
#line 831 "ext/date/lib/parse_iso_intervals.c"
|
||||
#line 914 "<stdout>"
|
||||
yy85:
|
||||
YYDEBUG(85, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '0') goto yy86;
|
||||
@@ -836,59 +920,74 @@ yy85:
|
||||
if (yych <= '3') goto yy88;
|
||||
goto yy13;
|
||||
yy86:
|
||||
YYDEBUG(86, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '0') goto yy13;
|
||||
if (yych <= '9') goto yy89;
|
||||
goto yy13;
|
||||
yy87:
|
||||
YYDEBUG(87, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '9') goto yy89;
|
||||
goto yy13;
|
||||
yy88:
|
||||
YYDEBUG(88, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= '2') goto yy13;
|
||||
yy89:
|
||||
YYDEBUG(89, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych != 'T') goto yy13;
|
||||
YYDEBUG(90, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '1') goto yy91;
|
||||
if (yych <= '2') goto yy92;
|
||||
goto yy13;
|
||||
yy91:
|
||||
YYDEBUG(91, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych <= '9') goto yy93;
|
||||
goto yy13;
|
||||
yy92:
|
||||
YYDEBUG(92, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= '5') goto yy13;
|
||||
yy93:
|
||||
YYDEBUG(93, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= '6') goto yy13;
|
||||
YYDEBUG(94, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= ':') goto yy13;
|
||||
YYDEBUG(95, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= '6') goto yy13;
|
||||
YYDEBUG(96, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy13;
|
||||
if (yych >= ':') goto yy13;
|
||||
YYDEBUG(97, *YYCURSOR);
|
||||
yych = *++YYCURSOR;
|
||||
if (yych == 'Z') goto yy83;
|
||||
goto yy13;
|
||||
yy98:
|
||||
YYDEBUG(98, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(99, *YYCURSOR);
|
||||
if (yych <= '/') goto yy100;
|
||||
if (yych <= '9') goto yy98;
|
||||
yy100:
|
||||
YYDEBUG(100, *YYCURSOR);
|
||||
#line 287 "ext/date/lib/parse_iso_intervals.re"
|
||||
{
|
||||
DEBUG_OUTPUT("recurrences");
|
||||
@@ -899,7 +998,7 @@ yy100:
|
||||
s->have_recurrences = 1;
|
||||
return TIMELIB_PERIOD;
|
||||
}
|
||||
#line 903 "ext/date/lib/parse_iso_intervals.c"
|
||||
#line 1002 "<stdout>"
|
||||
}
|
||||
#line 399 "ext/date/lib/parse_iso_intervals.re"
|
||||
|
||||
|
||||
+1009
-1078
File diff suppressed because it is too large.
Load diff
+14
-489
@@ -4,29 +4,18 @@
|
||||
{ "acdt", 1, 37800, "Australia/North" },
|
||||
{ "acdt", 1, 37800, "Australia/South" },
|
||||
{ "acdt", 1, 37800, "Australia/Yancowinna" },
|
||||
{ "acst", 1, -14400, "America/Porto_Acre" },
|
||||
{ "acst", 0, 32400, "Australia/Adelaide" },
|
||||
{ "acst", 0, 34200, "Australia/Adelaide" },
|
||||
{ "acst", 1, -14400, "America/Eirunepe" },
|
||||
{ "acst", 1, -14400, "America/Rio_Branco" },
|
||||
{ "acst", 1, -14400, "Brazil/Acre" },
|
||||
{ "acst", 0, 32400, "Australia/Broken_Hill" },
|
||||
{ "acst", 0, 32400, "Australia/Darwin" },
|
||||
{ "acst", 0, 32400, "Australia/North" },
|
||||
{ "acst", 0, 32400, "Australia/South" },
|
||||
{ "acst", 0, 32400, "Australia/Yancowinna" },
|
||||
{ "acst", 0, 34200, "Asia/Jayapura" },
|
||||
{ "acst", 0, 34200, "Australia/Broken_Hill" },
|
||||
{ "acst", 0, 34200, "Australia/Darwin" },
|
||||
{ "acst", 0, 34200, "Australia/North" },
|
||||
{ "acst", 0, 34200, "Australia/South" },
|
||||
{ "acst", 0, 34200, "Australia/Yancowinna" },
|
||||
{ "act", 0, -18000, "America/Porto_Acre" },
|
||||
{ "act", 0, -18000, "America/Eirunepe" },
|
||||
{ "act", 0, -18000, "America/Rio_Branco" },
|
||||
{ "act", 0, -18000, "Brazil/Acre" },
|
||||
{ "acwdt", 1, 35100, "Australia/Eucla" },
|
||||
{ "acwst", 0, 31500, "Australia/Eucla" },
|
||||
{ "addt", 1, -7200, "America/Goose_Bay" },
|
||||
{ "addt", 1, -7200, "America/Pangnirtung" },
|
||||
{ "adt", 1, -10800, "America/Halifax" },
|
||||
@@ -40,7 +29,6 @@
|
||||
{ "adt", 1, -10800, "America/Thule" },
|
||||
{ "adt", 1, -10800, "Atlantic/Bermuda" },
|
||||
{ "adt", 1, -10800, "Canada/Atlantic" },
|
||||
{ "adt", 1, 14400, "Asia/Baghdad" },
|
||||
{ "aedt", 1, 39600, "Australia/Melbourne" },
|
||||
{ "aedt", 1, 39600, "Antarctica/Macquarie" },
|
||||
{ "aedt", 1, 39600, "Australia/ACT" },
|
||||
@@ -69,8 +57,6 @@
|
||||
{ "aest", 0, 36000, "Australia/Sydney" },
|
||||
{ "aest", 0, 36000, "Australia/Tasmania" },
|
||||
{ "aest", 0, 36000, "Australia/Victoria" },
|
||||
{ "aft", 0, 16200, "Asia/Kabul" },
|
||||
{ "aft", 0, 14400, "Asia/Kabul" },
|
||||
{ "ahdt", 1, -32400, "America/Anchorage" },
|
||||
{ "ahst", 0, -36000, "America/Anchorage" },
|
||||
{ "ahst", 0, -36000, "America/Adak" },
|
||||
@@ -87,31 +73,9 @@
|
||||
{ "akst", 0, -32400, "America/Nome" },
|
||||
{ "akst", 0, -32400, "America/Sitka" },
|
||||
{ "akst", 0, -32400, "America/Yakutat" },
|
||||
{ "amst", 1, -10800, "America/Boa_Vista" },
|
||||
{ "amst", 1, -10800, "America/Campo_Grande" },
|
||||
{ "amst", 1, -10800, "America/Cuiaba" },
|
||||
{ "amst", 1, -10800, "America/Manaus" },
|
||||
{ "amst", 1, -10800, "America/Porto_Velho" },
|
||||
{ "amst", 1, -10800, "America/Santarem" },
|
||||
{ "amst", 1, -10800, "Brazil/West" },
|
||||
{ "amt", 0, -13840, "America/Asuncion" },
|
||||
{ "amt", 0, -14400, "America/Boa_Vista" },
|
||||
{ "amt", 0, -14400, "America/Campo_Grande" },
|
||||
{ "amt", 0, -14400, "America/Cuiaba" },
|
||||
{ "amt", 0, -14400, "America/Eirunepe" },
|
||||
{ "amt", 0, -14400, "America/Manaus" },
|
||||
{ "amt", 0, -14400, "America/Porto_Acre" },
|
||||
{ "amt", 0, -14400, "America/Porto_Velho" },
|
||||
{ "amt", 0, -14400, "America/Rio_Branco" },
|
||||
{ "amt", 0, -14400, "America/Santarem" },
|
||||
{ "amt", 0, -14400, "Brazil/Acre" },
|
||||
{ "amt", 0, -14400, "Brazil/West" },
|
||||
{ "amt", 0, 1172, "Europe/Amsterdam" },
|
||||
{ "amt", 0, 5692, "Europe/Athens" },
|
||||
{ "ant", 0, -16200, "America/Curacao" },
|
||||
{ "ant", 0, -16200, "America/Aruba" },
|
||||
{ "ant", 0, -16200, "America/Kralendijk" },
|
||||
{ "ant", 0, -16200, "America/Lower_Princes" },
|
||||
{ "apt", 1, -10800, "America/Halifax" },
|
||||
{ "apt", 1, -10800, "America/Blanc-Sablon" },
|
||||
{ "apt", 1, -10800, "America/Glace_Bay" },
|
||||
@@ -119,87 +83,7 @@
|
||||
{ "apt", 1, -10800, "America/Pangnirtung" },
|
||||
{ "apt", 1, -10800, "America/Puerto_Rico" },
|
||||
{ "apt", 1, -10800, "Canada/Atlantic" },
|
||||
{ "arst", 1, -7200, "America/Buenos_Aires" },
|
||||
{ "arst", 1, -10800, "America/Buenos_Aires" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Buenos_Aires" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Catamarca" },
|
||||
{ "arst", 1, -10800, "America/Argentina/ComodRivadavia" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Cordoba" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Jujuy" },
|
||||
{ "arst", 1, -10800, "America/Argentina/La_Rioja" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Mendoza" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Rio_Gallegos" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Salta" },
|
||||
{ "arst", 1, -10800, "America/Argentina/San_Juan" },
|
||||
{ "arst", 1, -10800, "America/Argentina/San_Luis" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Tucuman" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Ushuaia" },
|
||||
{ "arst", 1, -10800, "America/Catamarca" },
|
||||
{ "arst", 1, -10800, "America/Cordoba" },
|
||||
{ "arst", 1, -10800, "America/Jujuy" },
|
||||
{ "arst", 1, -10800, "America/Mendoza" },
|
||||
{ "arst", 1, -10800, "America/Rosario" },
|
||||
{ "arst", 1, -10800, "Antarctica/Palmer" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Buenos_Aires" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Catamarca" },
|
||||
{ "arst", 1, -7200, "America/Argentina/ComodRivadavia" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Cordoba" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Jujuy" },
|
||||
{ "arst", 1, -7200, "America/Argentina/La_Rioja" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Mendoza" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Rio_Gallegos" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Salta" },
|
||||
{ "arst", 1, -7200, "America/Argentina/San_Juan" },
|
||||
{ "arst", 1, -7200, "America/Argentina/San_Luis" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Tucuman" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Ushuaia" },
|
||||
{ "arst", 1, -7200, "America/Catamarca" },
|
||||
{ "arst", 1, -7200, "America/Cordoba" },
|
||||
{ "arst", 1, -7200, "America/Jujuy" },
|
||||
{ "arst", 1, -7200, "America/Mendoza" },
|
||||
{ "arst", 1, -7200, "America/Rosario" },
|
||||
{ "arst", 1, -7200, "Antarctica/Palmer" },
|
||||
{ "art", 0, -10800, "America/Buenos_Aires" },
|
||||
{ "art", 0, -14400, "America/Buenos_Aires" },
|
||||
{ "art", 0, -10800, "America/Argentina/Buenos_Aires" },
|
||||
{ "art", 0, -10800, "America/Argentina/Catamarca" },
|
||||
{ "art", 0, -10800, "America/Argentina/ComodRivadavia" },
|
||||
{ "art", 0, -10800, "America/Argentina/Cordoba" },
|
||||
{ "art", 0, -10800, "America/Argentina/Jujuy" },
|
||||
{ "art", 0, -10800, "America/Argentina/La_Rioja" },
|
||||
{ "art", 0, -10800, "America/Argentina/Mendoza" },
|
||||
{ "art", 0, -10800, "America/Argentina/Rio_Gallegos" },
|
||||
{ "art", 0, -10800, "America/Argentina/Salta" },
|
||||
{ "art", 0, -10800, "America/Argentina/San_Juan" },
|
||||
{ "art", 0, -10800, "America/Argentina/San_Luis" },
|
||||
{ "art", 0, -10800, "America/Argentina/Tucuman" },
|
||||
{ "art", 0, -10800, "America/Argentina/Ushuaia" },
|
||||
{ "art", 0, -10800, "America/Catamarca" },
|
||||
{ "art", 0, -10800, "America/Cordoba" },
|
||||
{ "art", 0, -10800, "America/Jujuy" },
|
||||
{ "art", 0, -10800, "America/Mendoza" },
|
||||
{ "art", 0, -10800, "America/Rosario" },
|
||||
{ "art", 0, -10800, "Antarctica/Palmer" },
|
||||
{ "art", 0, -14400, "America/Argentina/Buenos_Aires" },
|
||||
{ "art", 0, -14400, "America/Argentina/Catamarca" },
|
||||
{ "art", 0, -14400, "America/Argentina/ComodRivadavia" },
|
||||
{ "art", 0, -14400, "America/Argentina/Cordoba" },
|
||||
{ "art", 0, -14400, "America/Argentina/Jujuy" },
|
||||
{ "art", 0, -14400, "America/Argentina/La_Rioja" },
|
||||
{ "art", 0, -14400, "America/Argentina/Mendoza" },
|
||||
{ "art", 0, -14400, "America/Argentina/Rio_Gallegos" },
|
||||
{ "art", 0, -14400, "America/Argentina/Salta" },
|
||||
{ "art", 0, -14400, "America/Argentina/San_Juan" },
|
||||
{ "art", 0, -14400, "America/Argentina/San_Luis" },
|
||||
{ "art", 0, -14400, "America/Argentina/Tucuman" },
|
||||
{ "art", 0, -14400, "America/Argentina/Ushuaia" },
|
||||
{ "art", 0, -14400, "America/Catamarca" },
|
||||
{ "art", 0, -14400, "America/Cordoba" },
|
||||
{ "art", 0, -14400, "America/Jujuy" },
|
||||
{ "art", 0, -14400, "America/Mendoza" },
|
||||
{ "art", 0, -14400, "America/Rosario" },
|
||||
{ "art", 0, -14400, "Antarctica/Palmer" },
|
||||
{ "ast", 0, 10800, "Asia/Riyadh" },
|
||||
{ "apt", 1, -32400, "America/Anchorage" },
|
||||
{ "ast", 0, -14400, "America/Anguilla" },
|
||||
{ "ast", 0, -14400, "America/Antigua" },
|
||||
{ "ast", 0, -14400, "America/Aruba" },
|
||||
@@ -234,11 +118,7 @@
|
||||
{ "ast", 0, -14400, "America/Virgin" },
|
||||
{ "ast", 0, -14400, "Atlantic/Bermuda" },
|
||||
{ "ast", 0, -14400, "Canada/Atlantic" },
|
||||
{ "ast", 0, 10800, "Asia/Aden" },
|
||||
{ "ast", 0, 10800, "Asia/Baghdad" },
|
||||
{ "ast", 0, 10800, "Asia/Bahrain" },
|
||||
{ "ast", 0, 10800, "Asia/Kuwait" },
|
||||
{ "ast", 0, 10800, "Asia/Qatar" },
|
||||
{ "ast", 0, -36000, "America/Anchorage" },
|
||||
{ "awdt", 1, 32400, "Australia/Perth" },
|
||||
{ "awdt", 1, 32400, "Australia/West" },
|
||||
{ "awst", 0, 28800, "Australia/Perth" },
|
||||
@@ -250,14 +130,8 @@
|
||||
{ "awt", 1, -10800, "America/Pangnirtung" },
|
||||
{ "awt", 1, -10800, "America/Puerto_Rico" },
|
||||
{ "awt", 1, -10800, "Canada/Atlantic" },
|
||||
{ "azomt", 1, 0, "Atlantic/Azores" },
|
||||
{ "azost", 1, 0, "Atlantic/Azores" },
|
||||
{ "azost", 1, -3600, "Atlantic/Azores" },
|
||||
{ "azot", 0, -3600, "Atlantic/Azores" },
|
||||
{ "azot", 0, -7200, "Atlantic/Azores" },
|
||||
{ "awt", 1, -32400, "America/Anchorage" },
|
||||
{ "bdst", 1, 7200, "Europe/London" },
|
||||
{ "bdst", 1, 25200, "Asia/Dacca" },
|
||||
{ "bdst", 1, 25200, "Asia/Dhaka" },
|
||||
{ "bdst", 1, 7200, "Europe/Belfast" },
|
||||
{ "bdst", 1, 7200, "Europe/Gibraltar" },
|
||||
{ "bdst", 1, 7200, "Europe/Guernsey" },
|
||||
@@ -265,32 +139,8 @@
|
||||
{ "bdst", 1, 7200, "Europe/Jersey" },
|
||||
{ "bdst", 1, 7200, "GB" },
|
||||
{ "bdt", 1, -36000, "America/Adak" },
|
||||
{ "bdt", 0, 21600, "Asia/Dacca" },
|
||||
{ "bdt", 1, -36000, "America/Atka" },
|
||||
{ "bdt", 1, -36000, "America/Nome" },
|
||||
{ "bdt", 0, 21600, "Asia/Dhaka" },
|
||||
{ "beat", 0, 9000, "Africa/Mogadishu" },
|
||||
{ "beat", 0, 9000, "Africa/Addis_Ababa" },
|
||||
{ "beat", 0, 9000, "Africa/Asmara" },
|
||||
{ "beat", 0, 9000, "Africa/Asmera" },
|
||||
{ "beat", 0, 9000, "Africa/Dar_es_Salaam" },
|
||||
{ "beat", 0, 9000, "Africa/Djibouti" },
|
||||
{ "beat", 0, 9000, "Africa/Kampala" },
|
||||
{ "beat", 0, 9000, "Africa/Nairobi" },
|
||||
{ "beat", 0, 9000, "Indian/Antananarivo" },
|
||||
{ "beat", 0, 9000, "Indian/Comoro" },
|
||||
{ "beat", 0, 9000, "Indian/Mayotte" },
|
||||
{ "beaut", 0, 9900, "Africa/Nairobi" },
|
||||
{ "beaut", 0, 9900, "Africa/Addis_Ababa" },
|
||||
{ "beaut", 0, 9900, "Africa/Asmara" },
|
||||
{ "beaut", 0, 9900, "Africa/Asmera" },
|
||||
{ "beaut", 0, 9900, "Africa/Dar_es_Salaam" },
|
||||
{ "beaut", 0, 9900, "Africa/Djibouti" },
|
||||
{ "beaut", 0, 9900, "Africa/Kampala" },
|
||||
{ "beaut", 0, 9900, "Africa/Mogadishu" },
|
||||
{ "beaut", 0, 9900, "Indian/Antananarivo" },
|
||||
{ "beaut", 0, 9900, "Indian/Comoro" },
|
||||
{ "beaut", 0, 9900, "Indian/Mayotte" },
|
||||
{ "bmt", 0, -14309, "America/Barbados" },
|
||||
{ "bmt", 0, 6264, "Europe/Tiraspol" },
|
||||
{ "bmt", 0, -17776, "America/Bogota" },
|
||||
@@ -305,38 +155,12 @@
|
||||
{ "bmt", 0, 25632, "Asia/Jakarta" },
|
||||
{ "bmt", 0, 6264, "Europe/Bucharest" },
|
||||
{ "bmt", 0, 6264, "Europe/Chisinau" },
|
||||
{ "bnt", 0, 28800, "Asia/Brunei" },
|
||||
{ "bnt", 0, 27000, "Asia/Brunei" },
|
||||
{ "bortst", 1, 30000, "Asia/Kuching" },
|
||||
{ "bort", 0, 28800, "Asia/Kuching" },
|
||||
{ "bort", 0, 27000, "Asia/Kuching" },
|
||||
{ "bost", 1, -12756, "America/La_Paz" },
|
||||
{ "bot", 0, -14400, "America/La_Paz" },
|
||||
{ "brst", 1, -7200, "America/Sao_Paulo" },
|
||||
{ "brst", 1, -7200, "America/Araguaina" },
|
||||
{ "brst", 1, -7200, "America/Bahia" },
|
||||
{ "brst", 1, -7200, "America/Belem" },
|
||||
{ "brst", 1, -7200, "America/Fortaleza" },
|
||||
{ "brst", 1, -7200, "America/Maceio" },
|
||||
{ "brst", 1, -7200, "America/Recife" },
|
||||
{ "brst", 1, -7200, "Brazil/East" },
|
||||
{ "brt", 0, -10800, "America/Sao_Paulo" },
|
||||
{ "brt", 0, -10800, "America/Araguaina" },
|
||||
{ "brt", 0, -10800, "America/Bahia" },
|
||||
{ "brt", 0, -10800, "America/Belem" },
|
||||
{ "brt", 0, -10800, "America/Fortaleza" },
|
||||
{ "brt", 0, -10800, "America/Maceio" },
|
||||
{ "brt", 0, -10800, "America/Recife" },
|
||||
{ "brt", 0, -10800, "America/Santarem" },
|
||||
{ "brt", 0, -10800, "Brazil/East" },
|
||||
{ "bst", 1, 3600, "Europe/London" },
|
||||
{ "bst", 0, 3600, "Europe/London" },
|
||||
{ "bst", 0, -39600, "America/Adak" },
|
||||
{ "bst", 0, -39600, "America/Atka" },
|
||||
{ "bst", 0, -39600, "America/Nome" },
|
||||
{ "bst", 0, -39600, "Pacific/Midway" },
|
||||
{ "bst", 0, -39600, "Pacific/Pago_Pago" },
|
||||
{ "bst", 0, -39600, "Pacific/Samoa" },
|
||||
{ "bst", 0, 3600, "Europe/Belfast" },
|
||||
{ "bst", 0, 3600, "Europe/Guernsey" },
|
||||
{ "bst", 0, 3600, "Europe/Isle_of_Man" },
|
||||
@@ -349,21 +173,9 @@
|
||||
{ "bst", 1, 3600, "Europe/Isle_of_Man" },
|
||||
{ "bst", 1, 3600, "Europe/Jersey" },
|
||||
{ "bst", 1, 3600, "GB" },
|
||||
{ "bst", 0, 39600, "Pacific/Bougainville" },
|
||||
{ "btt", 0, 21600, "Asia/Thimbu" },
|
||||
{ "btt", 0, 21600, "Asia/Thimphu" },
|
||||
{ "burt", 0, 23400, "Asia/Kolkata" },
|
||||
{ "burt", 0, 23400, "Asia/Calcutta" },
|
||||
{ "burt", 0, 23400, "Asia/Dacca" },
|
||||
{ "burt", 0, 23400, "Asia/Dhaka" },
|
||||
{ "burt", 0, 23400, "Asia/Rangoon" },
|
||||
{ "burt", 0, 23400, "Asia/Yangon" },
|
||||
{ "cant", 0, -3600, "Atlantic/Canary" },
|
||||
{ "capt", 1, -32400, "America/Anchorage" },
|
||||
{ "cast", 0, 34200, "Australia/Adelaide" },
|
||||
{ "cast", 1, 10800, "Africa/Juba" },
|
||||
{ "cast", 1, 10800, "Africa/Khartoum" },
|
||||
{ "cat", 0, -36000, "America/Anchorage" },
|
||||
{ "cat", 0, 7200, "Africa/Khartoum" },
|
||||
{ "cat", 0, 7200, "Africa/Blantyre" },
|
||||
{ "cat", 0, 7200, "Africa/Bujumbura" },
|
||||
@@ -375,8 +187,6 @@
|
||||
{ "cat", 0, 7200, "Africa/Lusaka" },
|
||||
{ "cat", 0, 7200, "Africa/Maputo" },
|
||||
{ "cat", 0, 7200, "Africa/Windhoek" },
|
||||
{ "cawt", 1, -32400, "America/Anchorage" },
|
||||
{ "cct", 0, 23400, "Indian/Cocos" },
|
||||
{ "cddt", 1, -14400, "America/Rankin_Inlet" },
|
||||
{ "cddt", 1, -14400, "America/Resolute" },
|
||||
{ "cdt", 1, -18000, "America/Chicago" },
|
||||
@@ -428,6 +238,8 @@
|
||||
{ "cdt", 1, 32400, "Asia/Chongqing" },
|
||||
{ "cdt", 1, 32400, "Asia/Chungking" },
|
||||
{ "cdt", 1, 32400, "Asia/Harbin" },
|
||||
{ "cdt", 1, 32400, "Asia/Macao" },
|
||||
{ "cdt", 1, 32400, "Asia/Macau" },
|
||||
{ "cdt", 1, 32400, "Asia/Taipei" },
|
||||
{ "cdt", 1, 32400, "PRC" },
|
||||
{ "cdt", 1, 32400, "ROC" },
|
||||
@@ -537,32 +349,6 @@
|
||||
{ "cet", 0, 3600, "Europe/Zagreb" },
|
||||
{ "cet", 0, 3600, "Europe/Zaporozhye" },
|
||||
{ "cet", 0, 3600, "Europe/Zurich" },
|
||||
{ "cgst", 1, -3600, "America/Scoresbysund" },
|
||||
{ "cgt", 0, -7200, "America/Scoresbysund" },
|
||||
{ "chadt", 1, 49500, "Pacific/Chatham" },
|
||||
{ "chast", 0, 45900, "Pacific/Chatham" },
|
||||
{ "chast", 0, 44100, "Pacific/Chatham" },
|
||||
{ "chdt", 1, -19800, "America/Belize" },
|
||||
{ "chost", 1, 36000, "Asia/Choibalsan" },
|
||||
{ "chost", 1, 32400, "Asia/Choibalsan" },
|
||||
{ "chot", 0, 32400, "Asia/Choibalsan" },
|
||||
{ "chot", 0, 28800, "Asia/Choibalsan" },
|
||||
{ "chut", 0, 36000, "Pacific/Chuuk" },
|
||||
{ "chut", 0, 36000, "Pacific/Truk" },
|
||||
{ "chut", 0, 36000, "Pacific/Yap" },
|
||||
{ "ckhst", 1, -34200, "Pacific/Rarotonga" },
|
||||
{ "ckt", 0, -36000, "Pacific/Rarotonga" },
|
||||
{ "ckt", 0, -37800, "Pacific/Rarotonga" },
|
||||
{ "clst", 1, -10800, "America/Santiago" },
|
||||
{ "clst", 1, -14400, "America/Santiago" },
|
||||
{ "clst", 1, -10800, "Antarctica/Palmer" },
|
||||
{ "clst", 1, -10800, "Chile/Continental" },
|
||||
{ "clst", 1, -14400, "Chile/Continental" },
|
||||
{ "clt", 0, -14400, "America/Santiago" },
|
||||
{ "clt", 0, -18000, "America/Santiago" },
|
||||
{ "clt", 0, -14400, "Antarctica/Palmer" },
|
||||
{ "clt", 0, -14400, "Chile/Continental" },
|
||||
{ "clt", 0, -18000, "Chile/Continental" },
|
||||
{ "cmt", 0, -15408, "America/Argentina/Buenos_Aires" },
|
||||
{ "cmt", 0, -15408, "America/Argentina/Catamarca" },
|
||||
{ "cmt", 0, -15408, "America/Argentina/ComodRivadavia" },
|
||||
@@ -589,8 +375,6 @@
|
||||
{ "cmt", 0, 3020, "Europe/Copenhagen" },
|
||||
{ "cmt", 0, 6900, "Europe/Chisinau" },
|
||||
{ "cmt", 0, 6900, "Europe/Tiraspol" },
|
||||
{ "cost", 1, -14400, "America/Bogota" },
|
||||
{ "cot", 0, -18000, "America/Bogota" },
|
||||
{ "cpt", 1, -18000, "America/Chicago" },
|
||||
{ "cpt", 1, -18000, "America/Atikokan" },
|
||||
{ "cpt", 1, -18000, "America/Coral_Harbour" },
|
||||
@@ -662,7 +446,6 @@
|
||||
{ "cst", 0, -21600, "America/Thunder_Bay" },
|
||||
{ "cst", 0, -21600, "America/Winnipeg" },
|
||||
{ "cst", 0, -21600, "Canada/Central" },
|
||||
{ "cst", 0, -21600, "Canada/East-Saskatchewan" },
|
||||
{ "cst", 0, -21600, "Canada/Saskatchewan" },
|
||||
{ "cst", 0, -21600, "Mexico/BajaSur" },
|
||||
{ "cst", 0, -21600, "Mexico/General" },
|
||||
@@ -675,10 +458,6 @@
|
||||
{ "cst", 0, 28800, "Asia/Taipei" },
|
||||
{ "cst", 0, 28800, "PRC" },
|
||||
{ "cst", 0, 28800, "ROC" },
|
||||
{ "cut", 0, 8400, "Europe/Zaporozhye" },
|
||||
{ "cvst", 1, -3600, "Atlantic/Cape_Verde" },
|
||||
{ "cvt", 0, -7200, "Atlantic/Cape_Verde" },
|
||||
{ "cvt", 0, -3600, "Atlantic/Cape_Verde" },
|
||||
{ "cwt", 1, -18000, "America/Chicago" },
|
||||
{ "cwt", 1, -18000, "America/Atikokan" },
|
||||
{ "cwt", 1, -18000, "America/Coral_Harbour" },
|
||||
@@ -702,20 +481,9 @@
|
||||
{ "cwt", 1, -18000, "America/Winnipeg" },
|
||||
{ "cwt", 1, -18000, "Canada/Central" },
|
||||
{ "cwt", 1, -18000, "Mexico/General" },
|
||||
{ "cxt", 0, 25200, "Indian/Christmas" },
|
||||
{ "chst", 0, 36000, "Pacific/Guam" },
|
||||
{ "chst", 0, 36000, "Pacific/Saipan" },
|
||||
{ "dact", 0, 21600, "Asia/Dacca" },
|
||||
{ "dact", 0, 21600, "Asia/Dhaka" },
|
||||
{ "dmt", 0, -1521, "Europe/Dublin" },
|
||||
{ "easst", 1, -21600, "Chile/EasterIsland" },
|
||||
{ "easst", 1, -18000, "Chile/EasterIsland" },
|
||||
{ "easst", 1, -18000, "Pacific/Easter" },
|
||||
{ "easst", 1, -21600, "Pacific/Easter" },
|
||||
{ "east", 0, -21600, "Chile/EasterIsland" },
|
||||
{ "east", 0, -25200, "Chile/EasterIsland" },
|
||||
{ "east", 0, -21600, "Pacific/Easter" },
|
||||
{ "east", 0, -25200, "Pacific/Easter" },
|
||||
{ "eat", 0, 10800, "Africa/Khartoum" },
|
||||
{ "eat", 0, 10800, "Africa/Addis_Ababa" },
|
||||
{ "eat", 0, 10800, "Africa/Asmara" },
|
||||
@@ -729,8 +497,6 @@
|
||||
{ "eat", 0, 10800, "Indian/Antananarivo" },
|
||||
{ "eat", 0, 10800, "Indian/Comoro" },
|
||||
{ "eat", 0, 10800, "Indian/Mayotte" },
|
||||
{ "ect", 0, -18000, "America/Guayaquil" },
|
||||
{ "ect", 0, -18000, "Pacific/Galapagos" },
|
||||
{ "eddt", 1, -10800, "America/Iqaluit" },
|
||||
{ "edt", 1, -14400, "America/New_York" },
|
||||
{ "edt", 1, -14400, "America/Cancun" },
|
||||
@@ -764,6 +530,7 @@
|
||||
{ "eest", 1, 10800, "Asia/Amman" },
|
||||
{ "eest", 1, 10800, "Asia/Beirut" },
|
||||
{ "eest", 1, 10800, "Asia/Damascus" },
|
||||
{ "eest", 1, 10800, "Asia/Famagusta" },
|
||||
{ "eest", 1, 10800, "Asia/Gaza" },
|
||||
{ "eest", 1, 10800, "Asia/Hebron" },
|
||||
{ "eest", 1, 10800, "Asia/Istanbul" },
|
||||
@@ -788,13 +555,12 @@
|
||||
{ "eest", 1, 10800, "Europe/Warsaw" },
|
||||
{ "eest", 1, 10800, "Europe/Zaporozhye" },
|
||||
{ "eet", 0, 7200, "Europe/Helsinki" },
|
||||
{ "eet", 1, 10800, "Asia/Gaza" },
|
||||
{ "eet", 1, 10800, "Asia/Hebron" },
|
||||
{ "eet", 0, 7200, "Africa/Cairo" },
|
||||
{ "eet", 0, 7200, "Africa/Tripoli" },
|
||||
{ "eet", 0, 7200, "Asia/Amman" },
|
||||
{ "eet", 0, 7200, "Asia/Beirut" },
|
||||
{ "eet", 0, 7200, "Asia/Damascus" },
|
||||
{ "eet", 0, 7200, "Asia/Famagusta" },
|
||||
{ "eet", 0, 7200, "Asia/Gaza" },
|
||||
{ "eet", 0, 7200, "Asia/Hebron" },
|
||||
{ "eet", 0, 7200, "Asia/Istanbul" },
|
||||
@@ -818,9 +584,6 @@
|
||||
{ "eet", 0, 7200, "Europe/Vilnius" },
|
||||
{ "eet", 0, 7200, "Europe/Warsaw" },
|
||||
{ "eet", 0, 7200, "Europe/Zaporozhye" },
|
||||
{ "egst", 1, 0, "America/Scoresbysund" },
|
||||
{ "egt", 0, -3600, "America/Scoresbysund" },
|
||||
{ "ehdt", 1, -16200, "America/Santo_Domingo" },
|
||||
{ "emt", 0, -26248, "Chile/EasterIsland" },
|
||||
{ "emt", 0, -26248, "Pacific/Easter" },
|
||||
{ "ept", 1, -14400, "America/New_York" },
|
||||
@@ -881,25 +644,7 @@
|
||||
{ "ewt", 1, -14400, "America/Toronto" },
|
||||
{ "ewt", 1, -14400, "Canada/Eastern" },
|
||||
{ "ffmt", 0, -14660, "America/Martinique" },
|
||||
{ "fjst", 1, 46800, "Pacific/Fiji" },
|
||||
{ "fjt", 0, 43200, "Pacific/Fiji" },
|
||||
{ "fkst", 1, -7200, "Atlantic/Stanley" },
|
||||
{ "fkst", 0, -10800, "Atlantic/Stanley" },
|
||||
{ "fkst", 1, -10800, "Atlantic/Stanley" },
|
||||
{ "fkt", 0, -14400, "Atlantic/Stanley" },
|
||||
{ "fkt", 0, -10800, "Atlantic/Stanley" },
|
||||
{ "fmt", 0, -4056, "Atlantic/Madeira" },
|
||||
{ "fnst", 1, -3600, "America/Noronha" },
|
||||
{ "fnst", 1, -3600, "Brazil/DeNoronha" },
|
||||
{ "fnt", 0, -7200, "America/Noronha" },
|
||||
{ "fnt", 0, -7200, "Brazil/DeNoronha" },
|
||||
{ "galt", 0, -21600, "Pacific/Galapagos" },
|
||||
{ "gamt", 0, -32400, "Pacific/Gambier" },
|
||||
{ "gbgt", 0, -13500, "America/Guyana" },
|
||||
{ "gft", 0, -14400, "America/Cayenne" },
|
||||
{ "gft", 0, -10800, "America/Cayenne" },
|
||||
{ "ghst", 1, 1200, "Africa/Accra" },
|
||||
{ "gilt", 0, 43200, "Pacific/Tarawa" },
|
||||
{ "gmt", 0, 0, "Africa/Abidjan" },
|
||||
{ "gmt", 0, 0, "Africa/Accra" },
|
||||
{ "gmt", 0, 0, "Africa/Bamako" },
|
||||
@@ -927,16 +672,8 @@
|
||||
{ "gmt", 0, 0, "Europe/Jersey" },
|
||||
{ "gmt", 0, 0, "Europe/London" },
|
||||
{ "gmt", 0, 0, "GB" },
|
||||
{ "gst", 0, 14400, "Asia/Dubai" },
|
||||
{ "gst", 0, -7200, "Atlantic/South_Georgia" },
|
||||
{ "gst", 0, 14400, "Asia/Bahrain" },
|
||||
{ "gst", 0, 14400, "Asia/Muscat" },
|
||||
{ "gst", 0, 14400, "Asia/Qatar" },
|
||||
{ "gst", 0, 36000, "Pacific/Guam" },
|
||||
{ "gst", 0, 36000, "Pacific/Saipan" },
|
||||
{ "gyt", 0, -14400, "America/Guyana" },
|
||||
{ "gyt", 0, -10800, "America/Guyana" },
|
||||
{ "gyt", 0, -13500, "America/Guyana" },
|
||||
{ "hdt", 1, -34200, "Pacific/Honolulu" },
|
||||
{ "hdt", 1, -32400, "America/Adak" },
|
||||
{ "hdt", 1, -32400, "America/Atka" },
|
||||
@@ -951,95 +688,41 @@
|
||||
{ "hmt", 0, 21200, "Asia/Kolkata" },
|
||||
{ "hmt", 0, 5989, "Europe/Helsinki" },
|
||||
{ "hmt", 0, 5989, "Europe/Mariehamn" },
|
||||
{ "hovst", 1, 28800, "Asia/Hovd" },
|
||||
{ "hovt", 0, 25200, "Asia/Hovd" },
|
||||
{ "hovt", 0, 21600, "Asia/Hovd" },
|
||||
{ "hst", 0, -36000, "Pacific/Honolulu" },
|
||||
{ "hst", 0, -37800, "Pacific/Honolulu" },
|
||||
{ "hst", 0, -36000, "America/Adak" },
|
||||
{ "hst", 0, -36000, "America/Atka" },
|
||||
{ "hst", 0, -36000, "Pacific/Johnston" },
|
||||
{ "hst", 0, -37800, "Pacific/Johnston" },
|
||||
{ "ict", 0, 25200, "Asia/Bangkok" },
|
||||
{ "ict", 0, 25200, "Asia/Ho_Chi_Minh" },
|
||||
{ "ict", 0, 25200, "Asia/Phnom_Penh" },
|
||||
{ "ict", 0, 25200, "Asia/Saigon" },
|
||||
{ "ict", 0, 25200, "Asia/Vientiane" },
|
||||
{ "iddt", 1, 14400, "Asia/Jerusalem" },
|
||||
{ "iddt", 1, 14400, "Asia/Tel_Aviv" },
|
||||
{ "idt", 1, 10800, "Asia/Jerusalem" },
|
||||
{ "idt", 1, 10800, "Asia/Gaza" },
|
||||
{ "idt", 1, 10800, "Asia/Hebron" },
|
||||
{ "idt", 1, 10800, "Asia/Tel_Aviv" },
|
||||
{ "idt", 0, 28800, "Asia/Ho_Chi_Minh" },
|
||||
{ "idt", 0, 28800, "Asia/Saigon" },
|
||||
{ "ihst", 1, 21600, "Asia/Colombo" },
|
||||
{ "imt", 0, 25025, "Asia/Irkutsk" },
|
||||
{ "imt", 0, 7016, "Asia/Istanbul" },
|
||||
{ "imt", 0, 7016, "Europe/Istanbul" },
|
||||
{ "imt", 0, 7016, "Europe/Sofia" },
|
||||
{ "iot", 0, 21600, "Indian/Chagos" },
|
||||
{ "iot", 0, 18000, "Indian/Chagos" },
|
||||
{ "irdt", 1, 16200, "Asia/Tehran" },
|
||||
{ "irdt", 1, 18000, "Asia/Tehran" },
|
||||
{ "irst", 0, 12600, "Asia/Tehran" },
|
||||
{ "irst", 0, 14400, "Asia/Tehran" },
|
||||
{ "isst", 1, 0, "Atlantic/Reykjavik" },
|
||||
{ "ist", 0, 7200, "Asia/Jerusalem" },
|
||||
{ "ist", 0, -3600, "Atlantic/Reykjavik" },
|
||||
{ "ist", 0, 19800, "Asia/Calcutta" },
|
||||
{ "ist", 0, 19800, "Asia/Colombo" },
|
||||
{ "ist", 0, 19800, "Asia/Dacca" },
|
||||
{ "ist", 0, 19800, "Asia/Dhaka" },
|
||||
{ "ist", 0, 19800, "Asia/Karachi" },
|
||||
{ "ist", 0, 19800, "Asia/Kathmandu" },
|
||||
{ "ist", 0, 19800, "Asia/Katmandu" },
|
||||
{ "ist", 0, 19800, "Asia/Kolkata" },
|
||||
{ "ist", 0, 19800, "Asia/Thimbu" },
|
||||
{ "ist", 0, 19800, "Asia/Thimphu" },
|
||||
{ "ist", 1, 2079, "Europe/Dublin" },
|
||||
{ "ist", 1, 23400, "Asia/Calcutta" },
|
||||
{ "ist", 1, 23400, "Asia/Colombo" },
|
||||
{ "ist", 1, 23400, "Asia/Karachi" },
|
||||
{ "ist", 1, 23400, "Asia/Kolkata" },
|
||||
{ "ist", 0, 3600, "Europe/Dublin" },
|
||||
{ "ist", 1, 3600, "Europe/Dublin" },
|
||||
{ "ist", 0, 7200, "Asia/Gaza" },
|
||||
{ "ist", 0, 7200, "Asia/Hebron" },
|
||||
{ "ist", 0, 7200, "Asia/Tel_Aviv" },
|
||||
{ "javt", 0, 26400, "Asia/Jakarta" },
|
||||
{ "jcst", 0, 32400, "Asia/Pyongyang" },
|
||||
{ "jcst", 0, 32400, "Asia/Seoul" },
|
||||
{ "jcst", 0, 32400, "Asia/Tokyo" },
|
||||
{ "jcst", 0, 32400, "ROK" },
|
||||
{ "jdt", 1, 36000, "Asia/Tokyo" },
|
||||
{ "jmt", 0, 8440, "Asia/Jerusalem" },
|
||||
{ "jmt", 0, 8440, "Asia/Tel_Aviv" },
|
||||
{ "jst", 0, 32400, "Asia/Tokyo" },
|
||||
{ "jst", 0, 32400, "Asia/Dili" },
|
||||
{ "jst", 0, 32400, "Asia/Ho_Chi_Minh" },
|
||||
{ "jst", 0, 32400, "Asia/Hong_Kong" },
|
||||
{ "jst", 0, 32400, "Asia/Jakarta" },
|
||||
{ "jst", 0, 32400, "Asia/Kuala_Lumpur" },
|
||||
{ "jst", 0, 32400, "Asia/Kuching" },
|
||||
{ "jst", 0, 32400, "Asia/Makassar" },
|
||||
{ "jst", 0, 32400, "Asia/Manila" },
|
||||
{ "jst", 0, 32400, "Asia/Pontianak" },
|
||||
{ "jst", 0, 32400, "Asia/Pyongyang" },
|
||||
{ "jst", 0, 32400, "Asia/Rangoon" },
|
||||
{ "jst", 0, 32400, "Asia/Saigon" },
|
||||
{ "jst", 0, 32400, "Asia/Seoul" },
|
||||
{ "jst", 0, 32400, "Asia/Singapore" },
|
||||
{ "jst", 0, 32400, "Asia/Taipei" },
|
||||
{ "jst", 0, 32400, "Asia/Ujung_Pandang" },
|
||||
{ "jst", 0, 32400, "Asia/Yangon" },
|
||||
{ "jst", 0, 32400, "Pacific/Bougainville" },
|
||||
{ "jst", 0, 32400, "Pacific/Nauru" },
|
||||
{ "jst", 0, 32400, "ROC" },
|
||||
{ "jst", 0, 32400, "ROK" },
|
||||
{ "jwst", 0, 28800, "Asia/Taipei" },
|
||||
{ "jwst", 0, 28800, "ROC" },
|
||||
{ "kart", 0, 18000, "Asia/Karachi" },
|
||||
{ "kdt", 1, 36000, "Asia/Seoul" },
|
||||
{ "kdt", 1, 34200, "Asia/Seoul" },
|
||||
{ "kdt", 1, 34200, "ROK" },
|
||||
@@ -1048,40 +731,13 @@
|
||||
{ "kmt", 0, -18431, "America/Grand_Turk" },
|
||||
{ "kmt", 0, -18431, "America/Jamaica" },
|
||||
{ "kmt", 0, 7324, "Europe/Kiev" },
|
||||
{ "kost", 0, 43200, "Pacific/Kosrae" },
|
||||
{ "kost", 0, 39600, "Pacific/Kosrae" },
|
||||
{ "kst", 0, 30600, "Asia/Seoul" },
|
||||
{ "kst", 0, 32400, "Asia/Pyongyang" },
|
||||
{ "kst", 0, 32400, "Asia/Seoul" },
|
||||
{ "kst", 0, 30600, "Asia/Pyongyang" },
|
||||
{ "kst", 0, 30600, "ROK" },
|
||||
{ "kst", 0, 32400, "ROK" },
|
||||
{ "kwat", 0, -43200, "Pacific/Kwajalein" },
|
||||
{ "lhdt", 1, 39600, "Australia/LHI" },
|
||||
{ "lhdt", 1, 39600, "Australia/Lord_Howe" },
|
||||
{ "lhdt", 1, 41400, "Australia/LHI" },
|
||||
{ "lhdt", 1, 41400, "Australia/Lord_Howe" },
|
||||
{ "lhst", 0, 37800, "Australia/Lord_Howe" },
|
||||
{ "lhst", 0, 37800, "Australia/LHI" },
|
||||
{ "lint", 0, 50400, "Pacific/Kiritimati" },
|
||||
{ "lint", 0, -36000, "Pacific/Kiritimati" },
|
||||
{ "lint", 0, -38400, "Pacific/Kiritimati" },
|
||||
{ "lkt", 0, 23400, "Asia/Colombo" },
|
||||
{ "lkt", 0, 21600, "Asia/Colombo" },
|
||||
{ "lrt", 0, -2670, "Africa/Monrovia" },
|
||||
{ "lst", 1, 9394, "Europe/Riga" },
|
||||
{ "madmt", 1, 3600, "Atlantic/Madeira" },
|
||||
{ "madst", 1, 0, "Atlantic/Madeira" },
|
||||
{ "madt", 0, -3600, "Atlantic/Madeira" },
|
||||
{ "malst", 1, 26400, "Asia/Singapore" },
|
||||
{ "malst", 1, 26400, "Asia/Kuala_Lumpur" },
|
||||
{ "malt", 0, 27000, "Asia/Singapore" },
|
||||
{ "malt", 0, 25200, "Asia/Singapore" },
|
||||
{ "malt", 0, 26400, "Asia/Singapore" },
|
||||
{ "malt", 0, 25200, "Asia/Kuala_Lumpur" },
|
||||
{ "malt", 0, 26400, "Asia/Kuala_Lumpur" },
|
||||
{ "malt", 0, 27000, "Asia/Kuala_Lumpur" },
|
||||
{ "mart", 0, -34200, "Pacific/Marquesas" },
|
||||
{ "mddt", 1, -18000, "America/Cambridge_Bay" },
|
||||
{ "mddt", 1, -18000, "America/Yellowknife" },
|
||||
{ "mdst", 1, 16279, "Europe/Moscow" },
|
||||
@@ -1103,33 +759,22 @@
|
||||
{ "mdt", 1, -21600, "America/Shiprock" },
|
||||
{ "mdt", 1, -21600, "America/Swift_Current" },
|
||||
{ "mdt", 1, -21600, "America/Yellowknife" },
|
||||
{ "mdt", 1, -21600, "Canada/East-Saskatchewan" },
|
||||
{ "mdt", 1, -21600, "Canada/Mountain" },
|
||||
{ "mdt", 1, -21600, "Canada/Saskatchewan" },
|
||||
{ "mdt", 1, -21600, "Mexico/BajaSur" },
|
||||
{ "mest", 1, 7200, "MET" },
|
||||
{ "met", 0, 3600, "MET" },
|
||||
{ "mht", 0, 43200, "Pacific/Kwajalein" },
|
||||
{ "mht", 0, 39600, "Pacific/Kwajalein" },
|
||||
{ "mht", 0, 39600, "Pacific/Majuro" },
|
||||
{ "mht", 0, 43200, "Pacific/Majuro" },
|
||||
{ "mist", 0, 39600, "Antarctica/Macquarie" },
|
||||
{ "mmt", 0, 9017, "Europe/Moscow" },
|
||||
{ "mmt", 0, 9079, "Europe/Moscow" },
|
||||
{ "mmt", 0, -13484, "America/Montevideo" },
|
||||
{ "mmt", 0, -20712, "America/Managua" },
|
||||
{ "mmt", 0, -2588, "Africa/Monrovia" },
|
||||
{ "mmt", 0, -2670, "Africa/Monrovia" },
|
||||
{ "mmt", 0, 17640, "Indian/Maldives" },
|
||||
{ "mmt", 0, 19172, "Asia/Colombo" },
|
||||
{ "mmt", 0, 23400, "Asia/Rangoon" },
|
||||
{ "mmt", 0, 23400, "Asia/Yangon" },
|
||||
{ "mmt", 0, 19270, "Asia/Calcutta" },
|
||||
{ "mmt", 0, 19270, "Asia/Kolkata" },
|
||||
{ "mmt", 0, 28656, "Asia/Makassar" },
|
||||
{ "mmt", 0, 28656, "Asia/Ujung_Pandang" },
|
||||
{ "mmt", 0, 6600, "Europe/Minsk" },
|
||||
{ "most", 1, 32400, "Asia/Macao" },
|
||||
{ "most", 1, 32400, "Asia/Macau" },
|
||||
{ "mot", 0, 28800, "Asia/Macao" },
|
||||
{ "mot", 0, 28800, "Asia/Macau" },
|
||||
{ "mpt", 1, -21600, "America/Denver" },
|
||||
{ "mpt", 1, -21600, "America/Boise" },
|
||||
{ "mpt", 1, -21600, "America/Cambridge_Bay" },
|
||||
@@ -1141,7 +786,6 @@
|
||||
{ "mpt", 1, -21600, "America/Shiprock" },
|
||||
{ "mpt", 1, -21600, "America/Swift_Current" },
|
||||
{ "mpt", 1, -21600, "America/Yellowknife" },
|
||||
{ "mpt", 1, -21600, "Canada/East-Saskatchewan" },
|
||||
{ "mpt", 1, -21600, "Canada/Mountain" },
|
||||
{ "mpt", 1, -21600, "Canada/Saskatchewan" },
|
||||
{ "msd", 1, 14400, "Europe/Moscow" },
|
||||
@@ -1195,16 +839,12 @@
|
||||
{ "mst", 0, -25200, "America/Swift_Current" },
|
||||
{ "mst", 0, -25200, "America/Tijuana" },
|
||||
{ "mst", 0, -25200, "America/Yellowknife" },
|
||||
{ "mst", 0, -25200, "Canada/East-Saskatchewan" },
|
||||
{ "mst", 0, -25200, "Canada/Mountain" },
|
||||
{ "mst", 0, -25200, "Canada/Saskatchewan" },
|
||||
{ "mst", 0, -25200, "Mexico/BajaNorte" },
|
||||
{ "mst", 0, -25200, "Mexico/BajaSur" },
|
||||
{ "mst", 0, -25200, "Mexico/General" },
|
||||
{ "mst", 1, 12679, "Europe/Moscow" },
|
||||
{ "must", 1, 18000, "Indian/Mauritius" },
|
||||
{ "mut", 0, 14400, "Indian/Mauritius" },
|
||||
{ "mvt", 0, 18000, "Indian/Maldives" },
|
||||
{ "mwt", 1, -21600, "America/Denver" },
|
||||
{ "mwt", 1, -21600, "America/Boise" },
|
||||
{ "mwt", 1, -21600, "America/Cambridge_Bay" },
|
||||
@@ -1217,13 +857,8 @@
|
||||
{ "mwt", 1, -21600, "America/Shiprock" },
|
||||
{ "mwt", 1, -21600, "America/Swift_Current" },
|
||||
{ "mwt", 1, -21600, "America/Yellowknife" },
|
||||
{ "mwt", 1, -21600, "Canada/East-Saskatchewan" },
|
||||
{ "mwt", 1, -21600, "Canada/Mountain" },
|
||||
{ "mwt", 1, -21600, "Canada/Saskatchewan" },
|
||||
{ "myt", 0, 28800, "Asia/Kuala_Lumpur" },
|
||||
{ "myt", 0, 28800, "Asia/Kuching" },
|
||||
{ "ncst", 1, 43200, "Pacific/Noumea" },
|
||||
{ "nct", 0, 39600, "Pacific/Noumea" },
|
||||
{ "nddt", 1, -5400, "America/St_Johns" },
|
||||
{ "nddt", 1, -5400, "Canada/Newfoundland" },
|
||||
{ "ndt", 1, -9052, "America/St_Johns" },
|
||||
@@ -1232,23 +867,12 @@
|
||||
{ "ndt", 1, -9000, "Canada/Newfoundland" },
|
||||
{ "ndt", 1, -9052, "America/Goose_Bay" },
|
||||
{ "ndt", 1, -9052, "Canada/Newfoundland" },
|
||||
{ "negt", 0, -12600, "America/Paramaribo" },
|
||||
{ "nest", 1, 4800, "Europe/Amsterdam" },
|
||||
{ "net", 0, 1200, "Europe/Amsterdam" },
|
||||
{ "nfst", 1, 45000, "Pacific/Norfolk" },
|
||||
{ "nft", 0, 41400, "Pacific/Norfolk" },
|
||||
{ "nft", 0, 39600, "Pacific/Norfolk" },
|
||||
{ "nmt", 0, 40320, "Pacific/Norfolk" },
|
||||
{ "npt", 1, -9000, "America/St_Johns" },
|
||||
{ "npt", 0, 20700, "Asia/Katmandu" },
|
||||
{ "npt", 1, -36000, "America/Adak" },
|
||||
{ "npt", 1, -36000, "America/Atka" },
|
||||
{ "npt", 1, -36000, "America/Nome" },
|
||||
{ "npt", 1, -9000, "America/Goose_Bay" },
|
||||
{ "npt", 1, -9000, "Canada/Newfoundland" },
|
||||
{ "npt", 0, 20700, "Asia/Kathmandu" },
|
||||
{ "nrt", 0, 43200, "Pacific/Nauru" },
|
||||
{ "nrt", 0, 41400, "Pacific/Nauru" },
|
||||
{ "nst", 0, -12600, "America/St_Johns" },
|
||||
{ "nst", 0, -12652, "America/St_Johns" },
|
||||
{ "nst", 1, 4772, "Europe/Amsterdam" },
|
||||
@@ -1259,12 +883,6 @@
|
||||
{ "nst", 0, -39600, "America/Adak" },
|
||||
{ "nst", 0, -39600, "America/Atka" },
|
||||
{ "nst", 0, -39600, "America/Nome" },
|
||||
{ "nst", 0, -39600, "Pacific/Midway" },
|
||||
{ "nst", 0, -39600, "Pacific/Pago_Pago" },
|
||||
{ "nst", 0, -39600, "Pacific/Samoa" },
|
||||
{ "nut", 0, -39600, "Pacific/Niue" },
|
||||
{ "nut", 0, -40800, "Pacific/Niue" },
|
||||
{ "nut", 0, -41400, "Pacific/Niue" },
|
||||
{ "nwt", 1, -9000, "America/St_Johns" },
|
||||
{ "nwt", 1, -36000, "America/Adak" },
|
||||
{ "nwt", 1, -36000, "America/Atka" },
|
||||
@@ -1308,22 +926,12 @@
|
||||
{ "pdt", 1, -25200, "Canada/Pacific" },
|
||||
{ "pdt", 1, -25200, "Canada/Yukon" },
|
||||
{ "pdt", 1, -25200, "Mexico/BajaNorte" },
|
||||
{ "pest", 1, -14400, "America/Lima" },
|
||||
{ "pet", 0, -18000, "America/Lima" },
|
||||
{ "pgt", 0, 36000, "Pacific/Bougainville" },
|
||||
{ "pgt", 0, 36000, "Pacific/Port_Moresby" },
|
||||
{ "phot", 0, 46800, "Pacific/Enderbury" },
|
||||
{ "phot", 0, -39600, "Pacific/Enderbury" },
|
||||
{ "phot", 0, -43200, "Pacific/Enderbury" },
|
||||
{ "phst", 1, 32400, "Asia/Manila" },
|
||||
{ "pht", 0, 28800, "Asia/Manila" },
|
||||
{ "pkst", 1, 21600, "Asia/Karachi" },
|
||||
{ "pkt", 0, 18000, "Asia/Karachi" },
|
||||
{ "plmt", 0, 25590, "Asia/Ho_Chi_Minh" },
|
||||
{ "plmt", 0, 25590, "Asia/Saigon" },
|
||||
{ "pmdt", 1, -7200, "America/Miquelon" },
|
||||
{ "pmmt", 0, 35312, "Pacific/Bougainville" },
|
||||
{ "pmst", 0, -10800, "America/Miquelon" },
|
||||
{ "pmmt", 0, 35312, "Pacific/Port_Moresby" },
|
||||
{ "pmt", 0, -13236, "America/Paramaribo" },
|
||||
{ "pmt", 0, -13252, "America/Paramaribo" },
|
||||
{ "pmt", 0, 13505, "Asia/Yekaterinburg" },
|
||||
@@ -1334,9 +942,6 @@
|
||||
{ "pmt", 0, 561, "Africa/Tunis" },
|
||||
{ "pmt", 0, 561, "Europe/Monaco" },
|
||||
{ "pmt", 0, 561, "Europe/Paris" },
|
||||
{ "pnt", 0, -30600, "Pacific/Pitcairn" },
|
||||
{ "pont", 0, 39600, "Pacific/Pohnpei" },
|
||||
{ "pont", 0, 39600, "Pacific/Ponape" },
|
||||
{ "ppmt", 0, -17340, "America/Port-au-Prince" },
|
||||
{ "ppt", 1, -25200, "America/Los_Angeles" },
|
||||
{ "ppt", 1, -25200, "America/Dawson_Creek" },
|
||||
@@ -1372,7 +977,6 @@
|
||||
{ "pst", 0, -28800, "Canada/Yukon" },
|
||||
{ "pst", 0, -28800, "Mexico/BajaNorte" },
|
||||
{ "pst", 0, -28800, "Mexico/BajaSur" },
|
||||
{ "pst", 0, -28800, "Pacific/Pitcairn" },
|
||||
{ "pwt", 1, -25200, "America/Los_Angeles" },
|
||||
{ "pwt", 1, -25200, "America/Dawson_Creek" },
|
||||
{ "pwt", 1, -25200, "America/Ensenada" },
|
||||
@@ -1385,15 +989,10 @@
|
||||
{ "pwt", 1, -25200, "America/Vancouver" },
|
||||
{ "pwt", 1, -25200, "Canada/Pacific" },
|
||||
{ "pwt", 1, -25200, "Mexico/BajaNorte" },
|
||||
{ "pwt", 0, 32400, "Pacific/Palau" },
|
||||
{ "pyst", 1, -10800, "America/Asuncion" },
|
||||
{ "pyt", 0, -14400, "America/Asuncion" },
|
||||
{ "pyt", 0, -10800, "America/Asuncion" },
|
||||
{ "qmt", 0, -18840, "America/Guayaquil" },
|
||||
{ "ret", 0, 14400, "Indian/Reunion" },
|
||||
{ "rmt", 0, 5794, "Europe/Riga" },
|
||||
{ "rmt", 0, 23080, "Asia/Rangoon" },
|
||||
{ "rmt", 0, 23080, "Asia/Yangon" },
|
||||
{ "rmt", 0, 23087, "Asia/Rangoon" },
|
||||
{ "rmt", 0, 23087, "Asia/Yangon" },
|
||||
{ "rmt", 0, 2996, "Europe/Rome" },
|
||||
{ "rmt", 0, 2996, "Europe/San_Marino" },
|
||||
{ "rmt", 0, 2996, "Europe/Vatican" },
|
||||
@@ -1408,90 +1007,31 @@
|
||||
{ "sast", 0, 7200, "Africa/Maseru" },
|
||||
{ "sast", 0, 7200, "Africa/Mbabane" },
|
||||
{ "sast", 0, 7200, "Africa/Windhoek" },
|
||||
{ "sbt", 0, 39600, "Pacific/Guadalcanal" },
|
||||
{ "sct", 0, 14400, "Indian/Mahe" },
|
||||
{ "sdmt", 0, -16800, "America/Santo_Domingo" },
|
||||
{ "sdt", 1, -36000, "Pacific/Apia" },
|
||||
{ "set", 0, 3614, "Europe/Stockholm" },
|
||||
{ "sgt", 0, 28800, "Asia/Singapore" },
|
||||
{ "sgt", 0, 27000, "Asia/Singapore" },
|
||||
{ "sjmt", 0, -20173, "America/Costa_Rica" },
|
||||
{ "smt", 0, -13884, "Atlantic/Stanley" },
|
||||
{ "smt", 0, -16966, "America/Punta_Arenas" },
|
||||
{ "smt", 0, -16966, "America/Santiago" },
|
||||
{ "smt", 0, -16966, "Chile/Continental" },
|
||||
{ "smt", 0, 24925, "Asia/Kuala_Lumpur" },
|
||||
{ "smt", 0, 24925, "Asia/Singapore" },
|
||||
{ "smt", 0, 8160, "Europe/Simferopol" },
|
||||
{ "srt", 0, -10800, "America/Paramaribo" },
|
||||
{ "srt", 0, -12600, "America/Paramaribo" },
|
||||
{ "sst", 0, -39600, "Pacific/Samoa" },
|
||||
{ "sst", 0, -39600, "Pacific/Apia" },
|
||||
{ "sst", 0, -39600, "Pacific/Midway" },
|
||||
{ "sst", 0, -39600, "Pacific/Pago_Pago" },
|
||||
{ "swat", 0, 5400, "Africa/Windhoek" },
|
||||
{ "taht", 0, -36000, "Pacific/Tahiti" },
|
||||
{ "tbmt", 0, 10751, "Asia/Tbilisi" },
|
||||
{ "tkt", 0, -39600, "Pacific/Fakaofo" },
|
||||
{ "tkt", 0, 46800, "Pacific/Fakaofo" },
|
||||
{ "tlt", 0, 32400, "Asia/Dili" },
|
||||
{ "tlt", 0, 28800, "Asia/Dili" },
|
||||
{ "tmt", 0, 12344, "Asia/Tehran" },
|
||||
{ "tmt", 0, 5940, "Europe/Tallinn" },
|
||||
{ "tost", 1, 50400, "Pacific/Tongatapu" },
|
||||
{ "tot", 0, 46800, "Pacific/Tongatapu" },
|
||||
{ "tot", 0, 44400, "Pacific/Tongatapu" },
|
||||
{ "tvt", 0, 43200, "Pacific/Funafuti" },
|
||||
{ "uct", 0, 0, "Etc/UCT" },
|
||||
{ "ulast", 1, 32400, "Asia/Ulaanbaatar" },
|
||||
{ "ulast", 1, 32400, "Asia/Ulan_Bator" },
|
||||
{ "ulat", 0, 28800, "Asia/Ulaanbaatar" },
|
||||
{ "ulat", 0, 25200, "Asia/Ulaanbaatar" },
|
||||
{ "ulat", 0, 25200, "Asia/Choibalsan" },
|
||||
{ "ulat", 0, 25200, "Asia/Ulan_Bator" },
|
||||
{ "ulat", 0, 28800, "Asia/Choibalsan" },
|
||||
{ "ulat", 0, 28800, "Asia/Ulan_Bator" },
|
||||
{ "utc", 0, 0, "Etc/Universal" },
|
||||
{ "utc", 0, 0, "Etc/UTC" },
|
||||
{ "utc", 0, 0, "Etc/Zulu" },
|
||||
{ "utc", 0, 0, "UTC" },
|
||||
{ "utc", 0, 0, "UTC" },
|
||||
{ "uyhst", 1, -9000, "America/Montevideo" },
|
||||
{ "uyhst", 1, -10800, "America/Montevideo" },
|
||||
{ "uyst", 1, -7200, "America/Montevideo" },
|
||||
{ "uyt", 0, -10800, "America/Montevideo" },
|
||||
{ "uyt", 0, -12600, "America/Montevideo" },
|
||||
{ "vet", 0, -16200, "America/Caracas" },
|
||||
{ "vet", 0, -14400, "America/Caracas" },
|
||||
{ "vust", 1, 43200, "Pacific/Efate" },
|
||||
{ "vut", 0, 39600, "Pacific/Efate" },
|
||||
{ "wakt", 0, 43200, "Pacific/Wake" },
|
||||
{ "warst", 1, -10800, "America/Mendoza" },
|
||||
{ "warst", 1, -10800, "America/Argentina/Jujuy" },
|
||||
{ "warst", 1, -10800, "America/Argentina/Mendoza" },
|
||||
{ "warst", 1, -10800, "America/Argentina/San_Luis" },
|
||||
{ "warst", 1, -10800, "America/Jujuy" },
|
||||
{ "wart", 0, -14400, "America/Mendoza" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Catamarca" },
|
||||
{ "wart", 0, -14400, "America/Argentina/ComodRivadavia" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Cordoba" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Jujuy" },
|
||||
{ "wart", 0, -14400, "America/Argentina/La_Rioja" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Mendoza" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Rio_Gallegos" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Salta" },
|
||||
{ "wart", 0, -14400, "America/Argentina/San_Juan" },
|
||||
{ "wart", 0, -14400, "America/Argentina/San_Luis" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Tucuman" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Ushuaia" },
|
||||
{ "wart", 0, -14400, "America/Catamarca" },
|
||||
{ "wart", 0, -14400, "America/Cordoba" },
|
||||
{ "wart", 0, -14400, "America/Jujuy" },
|
||||
{ "wart", 0, -14400, "America/Rosario" },
|
||||
{ "wast", 1, 7200, "Africa/Windhoek" },
|
||||
{ "wast", 1, 7200, "Africa/Ndjamena" },
|
||||
{ "wat", 0, 3600, "Africa/Brazzaville" },
|
||||
{ "wat", 0, -3600, "Africa/Bissau" },
|
||||
{ "wat", 0, -3600, "Africa/El_Aaiun" },
|
||||
{ "wat", 0, 3600, "Africa/Bangui" },
|
||||
{ "wat", 0, 3600, "Africa/Douala" },
|
||||
{ "wat", 0, 3600, "Africa/Kinshasa" },
|
||||
@@ -1539,29 +1079,14 @@
|
||||
{ "wet", 0, 0, "Europe/Luxembourg" },
|
||||
{ "wet", 0, 0, "Europe/Madrid" },
|
||||
{ "wet", 0, 0, "Europe/Monaco" },
|
||||
{ "wft", 0, 43200, "Pacific/Wallis" },
|
||||
{ "wgst", 1, -7200, "America/Godthab" },
|
||||
{ "wgst", 1, -7200, "America/Danmarkshavn" },
|
||||
{ "wgt", 0, -10800, "America/Godthab" },
|
||||
{ "wgt", 0, -10800, "America/Danmarkshavn" },
|
||||
{ "wib", 0, 25200, "Asia/Jakarta" },
|
||||
{ "wib", 0, 25200, "Asia/Pontianak" },
|
||||
{ "wib", 0, 27000, "Asia/Jakarta" },
|
||||
{ "wib", 0, 27000, "Asia/Pontianak" },
|
||||
{ "wib", 0, 28800, "Asia/Jakarta" },
|
||||
{ "wib", 0, 28800, "Asia/Pontianak" },
|
||||
{ "wita", 0, 28800, "Asia/Dili" },
|
||||
{ "wita", 0, 28800, "Asia/Makassar" },
|
||||
{ "wita", 0, 28800, "Asia/Pontianak" },
|
||||
{ "wita", 0, 28800, "Asia/Ujung_Pandang" },
|
||||
{ "wit", 0, 32400, "Asia/Jayapura" },
|
||||
{ "wmt", 0, 5040, "Europe/Vilnius" },
|
||||
{ "wmt", 0, 5040, "Europe/Warsaw" },
|
||||
{ "wsdt", 1, 50400, "Pacific/Apia" },
|
||||
{ "wsst", 0, -41400, "Pacific/Apia" },
|
||||
{ "wsst", 0, 46800, "Pacific/Apia" },
|
||||
{ "xjt", 0, 21600, "Asia/Kashgar" },
|
||||
{ "xjt", 0, 21600, "Asia/Urumqi" },
|
||||
{ "yddt", 1, -25200, "America/Dawson" },
|
||||
{ "yddt", 1, -25200, "America/Whitehorse" },
|
||||
{ "yddt", 1, -25200, "Canada/Yukon" },
|
||||
|
||||
+46
-6
@@ -658,6 +658,7 @@ static HashTable *date_object_get_gc_timezone(zval *object, zval **table, int *n
|
||||
|
||||
zval *date_interval_read_property(zval *object, zval *member, int type, void **cache_slot, zval *rv);
|
||||
void date_interval_write_property(zval *object, zval *member, zval *value, void **cache_slot);
|
||||
static zval *date_interval_get_property_ptr_ptr(zval *object, zval *member, int type, void **cache_slot);
|
||||
static zval *date_period_read_property(zval *object, zval *member, int type, void **cache_slot, zval *rv);
|
||||
static void date_period_write_property(zval *object, zval *member, zval *value, void **cache_slot);
|
||||
|
||||
@@ -921,6 +922,7 @@ PHP_MINFO_FUNCTION(date)
|
||||
|
||||
php_info_print_table_start();
|
||||
php_info_print_table_row(2, "date/time support", "enabled");
|
||||
php_info_print_table_row(2, "timelib version", TIMELIB_ASCII_VERSION);
|
||||
php_info_print_table_row(2, "\"Olson\" Timezone Database Version", tzdb->version);
|
||||
php_info_print_table_row(2, "Timezone Database", php_date_global_timezone_db_enabled ? "external" : "internal");
|
||||
php_info_print_table_row(2, "Default timezone", guess_timezone(tzdb));
|
||||
@@ -1944,6 +1946,10 @@ static void date_period_it_rewind(zend_object_iterator *iter)
|
||||
if (iterator->object->current) {
|
||||
timelib_time_dtor(iterator->object->current);
|
||||
}
|
||||
if (!iterator->object->start) {
|
||||
zend_throw_error(NULL, "DatePeriod has not been initialized correctly");
|
||||
return;
|
||||
}
|
||||
iterator->object->current = timelib_time_clone(iterator->object->start);
|
||||
date_period_it_invalidate_current(iter);
|
||||
}
|
||||
@@ -1998,7 +2004,7 @@ static int date_interval_has_property(zval *object, zval *member, int type, void
|
||||
zval *prop;
|
||||
int retval = 0;
|
||||
|
||||
if (Z_TYPE_P(member) != IS_STRING) {
|
||||
if (UNEXPECTED(Z_TYPE_P(member) != IS_STRING)) {
|
||||
ZVAL_COPY(&tmp_member, member);
|
||||
convert_to_string(&tmp_member);
|
||||
member = &tmp_member;
|
||||
@@ -2014,10 +2020,10 @@ static int date_interval_has_property(zval *object, zval *member, int type, void
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
prop = date_interval_read_property(object, member, type, cache_slot, &rv);
|
||||
|
||||
if (prop != NULL) {
|
||||
|
||||
prop = date_interval_read_property(object, member, BP_VAR_IS, cache_slot, &rv);
|
||||
|
||||
if (prop != &EG(uninitialized_zval)) {
|
||||
if (type == 2) {
|
||||
retval = 1;
|
||||
} else if (type == 1) {
|
||||
@@ -2124,7 +2130,7 @@ static void date_register_classes(void) /* {{{ */
|
||||
date_object_handlers_interval.read_property = date_interval_read_property;
|
||||
date_object_handlers_interval.write_property = date_interval_write_property;
|
||||
date_object_handlers_interval.get_properties = date_object_get_properties_interval;
|
||||
date_object_handlers_interval.get_property_ptr_ptr = NULL;
|
||||
date_object_handlers_interval.get_property_ptr_ptr = date_interval_get_property_ptr_ptr;
|
||||
date_object_handlers_interval.get_gc = date_object_get_gc_interval;
|
||||
|
||||
INIT_CLASS_ENTRY(ce_period, "DatePeriod", date_funcs_period);
|
||||
@@ -4210,6 +4216,40 @@ void date_interval_write_property(zval *object, zval *member, zval *value, void
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ date_interval_get_property_ptr_ptr */
|
||||
static zval *date_interval_get_property_ptr_ptr(zval *object, zval *member, int type, void **cache_slot)
|
||||
{
|
||||
zval tmp_member, *ret;
|
||||
|
||||
if (Z_TYPE_P(member) != IS_STRING) {
|
||||
tmp_member = *member;
|
||||
zval_copy_ctor(&tmp_member);
|
||||
convert_to_string(&tmp_member);
|
||||
member = &tmp_member;
|
||||
cache_slot = NULL;
|
||||
}
|
||||
|
||||
if(zend_binary_strcmp("y", sizeof("y") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0 ||
|
||||
zend_binary_strcmp("m", sizeof("m") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0 ||
|
||||
zend_binary_strcmp("d", sizeof("d") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0 ||
|
||||
zend_binary_strcmp("h", sizeof("h") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0 ||
|
||||
zend_binary_strcmp("i", sizeof("i") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0 ||
|
||||
zend_binary_strcmp("s", sizeof("s") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0 ||
|
||||
zend_binary_strcmp("days", sizeof("days") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0 ||
|
||||
zend_binary_strcmp("invert", sizeof("invert") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0) {
|
||||
/* Fallback to read_property. */
|
||||
ret = NULL;
|
||||
} else {
|
||||
ret = (zend_get_std_object_handlers())->get_property_ptr_ptr(object, member, type, cache_slot);
|
||||
}
|
||||
|
||||
if (member == &tmp_member) {
|
||||
zval_dtor(member);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto DateInterval::__construct([string interval_spec])
|
||||
Creates new DateInterval object.
|
||||
|
||||
@@ -52,13 +52,6 @@ Array
|
||||
[comments] => %s
|
||||
)
|
||||
Array
|
||||
(
|
||||
[country_code] => %s
|
||||
[latitude] => %f
|
||||
[longitude] => %f
|
||||
[comments] =>
|
||||
)
|
||||
Array
|
||||
(
|
||||
[country_code] => %s
|
||||
[latitude] => %f
|
||||
|
||||
@@ -29,22 +29,22 @@ string(5) "array"
|
||||
int(%d)
|
||||
|
||||
-- Format a sample entry --
|
||||
array(17) {
|
||||
array(12) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(18) "America/Porto_Acre"
|
||||
string(18) "Australia/Adelaide"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(18) "Australia/Adelaide"
|
||||
}
|
||||
@@ -53,36 +53,36 @@ array(17) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(18) "Australia/Adelaide"
|
||||
string(21) "Australia/Broken_Hill"
|
||||
}
|
||||
[3]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(16) "America/Eirunepe"
|
||||
string(16) "Australia/Darwin"
|
||||
}
|
||||
[4]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(18) "America/Rio_Branco"
|
||||
string(15) "Australia/North"
|
||||
}
|
||||
[5]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(11) "Brazil/Acre"
|
||||
string(15) "Australia/South"
|
||||
}
|
||||
[6]=>
|
||||
array(3) {
|
||||
@@ -91,81 +91,36 @@ array(17) {
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(21) "Australia/Broken_Hill"
|
||||
string(20) "Australia/Yancowinna"
|
||||
}
|
||||
[7]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(16) "Australia/Darwin"
|
||||
string(21) "Australia/Broken_Hill"
|
||||
}
|
||||
[8]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/North"
|
||||
string(16) "Australia/Darwin"
|
||||
}
|
||||
[9]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/South"
|
||||
string(15) "Australia/North"
|
||||
}
|
||||
[10]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(20) "Australia/Yancowinna"
|
||||
}
|
||||
[11]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(13) "Asia/Jayapura"
|
||||
}
|
||||
[12]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(21) "Australia/Broken_Hill"
|
||||
}
|
||||
[13]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(16) "Australia/Darwin"
|
||||
}
|
||||
[14]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/North"
|
||||
}
|
||||
[15]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
@@ -174,7 +129,7 @@ array(17) {
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/South"
|
||||
}
|
||||
[16]=>
|
||||
[11]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
|
||||
@@ -5,7 +5,7 @@ date.timezone=Asia/Singapore
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
print strtotime('2008-05-23 00:00:00 SGT');
|
||||
print strtotime('2008-05-23 00:00:00 +08');
|
||||
print "\n";
|
||||
print strtotime('2008-05-23 00:00:00');
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ object(DateInterval)#%d (16) {
|
||||
["special_amount"]=>
|
||||
int(-1)
|
||||
["have_weekday_relative"]=>
|
||||
int(9)
|
||||
int(%d)
|
||||
["have_special_relative"]=>
|
||||
int(0)
|
||||
["f"]=>
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Bug #74852 property_exists returns true on unknown DateInterval property
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$interval = new DateInterval('P2D');
|
||||
var_dump(property_exists($interval,'abcde'));
|
||||
var_dump(isset($interval->abcde));
|
||||
var_dump($interval->abcde);
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
bool(false)
|
||||
bool(false)
|
||||
|
||||
Notice: Undefined property: DateInterval::$abcde in %s on line %d
|
||||
NULL
|
||||
@@ -0,0 +1,22 @@
|
||||
--TEST--
|
||||
Bug #75002 Null Pointer Dereference in timelib_time_clone
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class aaa extends DatePeriod {
|
||||
public function __construct() { }
|
||||
}
|
||||
|
||||
$start=new DateTime( '2012-08-01' );
|
||||
|
||||
foreach (new aaa($start) as $y) {
|
||||
$a=$key;
|
||||
}
|
||||
|
||||
?>
|
||||
==DONE==
|
||||
--EXPECTF--
|
||||
Fatal error: Uncaught Error: DatePeriod has not been initialized correctly in %sbug75002.php:%d
|
||||
Stack trace:
|
||||
#0 {main}
|
||||
thrown in %sbug75002.php on line %d
|
||||
@@ -34,14 +34,14 @@ foreach ( $tests as $start => $data )
|
||||
echo "\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
Sat, 23 Oct 2010 00:00:00 +0000
|
||||
Fri, 15 Oct 2010 23:00:00 +0000
|
||||
Wed, 15 Dec 2010 16:15:00 +0000
|
||||
Mon, 20 Dec 2010 00:00:00 +0000
|
||||
Mon, 20 Dec 2010 10:00:00 +0000
|
||||
Tue, 21 Dec 2010 12:00:00 +0000
|
||||
Mon, 03 Jan 2011 00:00:00 +0000
|
||||
Mon, 03 Jan 2011 09:00:00 +0000
|
||||
Sat, 23 Oct 2010 00:00:00 +0100
|
||||
Fri, 15 Oct 2010 23:00:00 +0100
|
||||
Sun, 28 Mar 2010 00:15:00 +0000
|
||||
Sun, 28 Mar 2010 02:15:00 +0100
|
||||
Sun, 28 Mar 2010 02:15:00 +0100
|
||||
@@ -0,0 +1,16 @@
|
||||
--TEST--
|
||||
Test DateInterval props with dimension handling
|
||||
--FILE--
|
||||
<?php
|
||||
class Z extends DateInterval{}
|
||||
$z = new Z('P2Y4DT6H8M');
|
||||
$i = 0;
|
||||
$z->prop[1]=10;
|
||||
while ($i < 1026) {
|
||||
$z->prop[$i] = $i;
|
||||
$i++;
|
||||
}
|
||||
?>
|
||||
==NOCRASH==
|
||||
--EXPECT--
|
||||
==NOCRASH==
|
||||
@@ -26,25 +26,25 @@ var_dump( $abbr["acst"] );
|
||||
--EXPECTF--
|
||||
*** Testing timezone_abbreviations_list() : basic functionality ***
|
||||
string(5) "array"
|
||||
int(%d)
|
||||
int(142)
|
||||
|
||||
-- Format a sample entry --
|
||||
array(17) {
|
||||
array(12) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(18) "America/Porto_Acre"
|
||||
string(18) "Australia/Adelaide"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(18) "Australia/Adelaide"
|
||||
}
|
||||
@@ -53,36 +53,36 @@ array(17) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(18) "Australia/Adelaide"
|
||||
string(21) "Australia/Broken_Hill"
|
||||
}
|
||||
[3]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(16) "America/Eirunepe"
|
||||
string(16) "Australia/Darwin"
|
||||
}
|
||||
[4]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(18) "America/Rio_Branco"
|
||||
string(15) "Australia/North"
|
||||
}
|
||||
[5]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(11) "Brazil/Acre"
|
||||
string(15) "Australia/South"
|
||||
}
|
||||
[6]=>
|
||||
array(3) {
|
||||
@@ -91,81 +91,36 @@ array(17) {
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(21) "Australia/Broken_Hill"
|
||||
string(20) "Australia/Yancowinna"
|
||||
}
|
||||
[7]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(16) "Australia/Darwin"
|
||||
string(21) "Australia/Broken_Hill"
|
||||
}
|
||||
[8]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/North"
|
||||
string(16) "Australia/Darwin"
|
||||
}
|
||||
[9]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/South"
|
||||
string(15) "Australia/North"
|
||||
}
|
||||
[10]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(20) "Australia/Yancowinna"
|
||||
}
|
||||
[11]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(13) "Asia/Jayapura"
|
||||
}
|
||||
[12]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(21) "Australia/Broken_Hill"
|
||||
}
|
||||
[13]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(16) "Australia/Darwin"
|
||||
}
|
||||
[14]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/North"
|
||||
}
|
||||
[15]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
@@ -174,7 +129,7 @@ array(17) {
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/South"
|
||||
}
|
||||
[16]=>
|
||||
[11]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
|
||||
@@ -24,7 +24,6 @@ var_dump( timezone_name_from_abbr("EDT") );
|
||||
echo "-- Lookup with name and offset--\n";
|
||||
var_dump( timezone_name_from_abbr("ADT", -10800) );
|
||||
var_dump( timezone_name_from_abbr("ADT", 14400) );
|
||||
var_dump( timezone_name_from_abbr("AMST", -10800) );
|
||||
|
||||
echo "-- Tests without valid name - uses gmtOffset and isdst to find match --\n";
|
||||
var_dump( timezone_name_from_abbr("", 3600, 1) );
|
||||
@@ -47,8 +46,7 @@ string(13) "Europe/Berlin"
|
||||
string(16) "America/New_York"
|
||||
-- Lookup with name and offset--
|
||||
string(15) "America/Halifax"
|
||||
string(12) "Asia/Baghdad"
|
||||
string(17) "America/Boa_Vista"
|
||||
string(15) "America/Halifax"
|
||||
-- Tests without valid name - uses gmtOffset and isdst to find match --
|
||||
string(13) "Europe/London"
|
||||
string(17) "America/Sao_Paulo"
|
||||
|
||||
@@ -5,7 +5,7 @@ Test 5: HTML Test
|
||||
--FILE--
|
||||
<?php
|
||||
$dom = new domdocument;
|
||||
$dom->loadHTMLFile(dirname(__FILE__)."/test.html");
|
||||
$dom->loadHTMLFile(dirname(__FILE__)."/test.html", LIBXML_NOBLANKS);
|
||||
print "--- save as XML\n";
|
||||
|
||||
print adjustDoctype($dom->saveXML());
|
||||
|
||||
@@ -323,7 +323,6 @@ PHP_MINFO_FUNCTION(enchant)
|
||||
#elif defined(HAVE_ENCHANT_BROKER_SET_PARAM)
|
||||
php_info_print_table_row(2, "Libenchant Version", "1.5.0 or later");
|
||||
#endif
|
||||
php_info_print_table_row(2, "Revision", "$Id$");
|
||||
php_info_print_table_end();
|
||||
|
||||
php_info_print_table_start();
|
||||
@@ -483,6 +482,11 @@ PHP_FUNCTION(enchant_broker_get_dict_path)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (value == NULL) {
|
||||
php_error_docref(NULL, E_WARNING, "dict_path not set");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
RETURN_STRING(value);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
extern zend_module_entry enchant_module_entry;
|
||||
#define phpext_enchant_ptr &enchant_module_entry
|
||||
|
||||
#define PHP_ENCHANT_VERSION "1.1.0"
|
||||
#define PHP_ENCHANT_VERSION PHP_VERSION
|
||||
|
||||
#ifdef PHP_WIN32
|
||||
#define PHP_ENCHANT_API __declspec(dllexport)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #53070 (enchant_broker_get_path crashes if no path is set)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if(!extension_loaded('enchant')) die('skip, enchant not loader');
|
||||
if (!is_resource(enchant_broker_init())) {die("skip, resource dont load\n");}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$broker = enchant_broker_init();
|
||||
var_dump(enchant_broker_get_dict_path($broker, ENCHANT_MYSPELL));
|
||||
var_dump(enchant_broker_get_dict_path($broker, ENCHANT_ISPELL));
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
||||
Warning: enchant_broker_get_dict_path(): dict_path not set in %s on line %d
|
||||
bool(false)
|
||||
|
||||
Warning: enchant_broker_get_dict_path(): dict_path not set in %s on line %d
|
||||
bool(false)
|
||||
+1
-1
@@ -22,7 +22,7 @@
|
||||
#if HAVE_EXIF
|
||||
|
||||
#include "php_version.h"
|
||||
#define PHP_EXIF_VERSION "1.4 $Id: 8bdc0c8f27c2c9dd1f7551f1f9fe3ab57a06a4b1 $"
|
||||
#define PHP_EXIF_VERSION PHP_VERSION
|
||||
|
||||
extern zend_module_entry exif_module_entry;
|
||||
#define phpext_exif_ptr &exif_module_entry
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
--TEST--
|
||||
Test exif_read_data on unavailable file
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded('exif')) print 'skip exif extension not available';?>
|
||||
--FILE--
|
||||
<?php
|
||||
$infile = dirname(__FILE__).'/bug73115.JPG';
|
||||
exif_read_data($infile);
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECTF--
|
||||
Warning: exif_read_data(): Unable to open file in %sexif_read_data_0.php on line %d
|
||||
===DONE===
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
fileinfo
|
||||
Ilia Alshanetsky, Pierre Alain Joye, Scott MacVicar, Derick Rethans
|
||||
Ilia Alshanetsky, Pierre Alain Joye, Scott MacVicar, Derick Rethans, Anatol Belski
|
||||
Binary file not shown.
@@ -1,16 +1,38 @@
|
||||
--TEST--
|
||||
Bug #67647: Bundled libmagic 5.17 does not detect quicktime files correctly
|
||||
--SKIPIF--
|
||||
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
|
||||
<?php
|
||||
require_once(dirname(__FILE__) . '/skipif.inc');
|
||||
|
||||
if (ini_get("default_charset") != "UTF-8") {
|
||||
die("skip require default_charset == UTF-8");
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$f = dirname(__FILE__) . DIRECTORY_SEPARATOR . "67647私はガラスを食べられます.mov";
|
||||
$src = dirname(__FILE__) . DIRECTORY_SEPARATOR . "67647.mov";
|
||||
|
||||
$f_base = "67647私はガラスを食べられます.mov";
|
||||
$f = dirname(__FILE__) . DIRECTORY_SEPARATOR . $f_base;
|
||||
|
||||
/* Streams mb path support is tested a lot elsewhere. Copy the existing file
|
||||
therefore, avoid duplication in the repo. */
|
||||
if (!copy($src, $f) || empty(glob($f))) {
|
||||
die("failed to copy '$src' to '$f'");
|
||||
}
|
||||
|
||||
$fi = new finfo(FILEINFO_MIME_TYPE);
|
||||
var_dump($fi->file($f));
|
||||
|
||||
?>
|
||||
+++DONE+++
|
||||
--CLEAN--
|
||||
<?php
|
||||
$f_base = "67647私はガラスを食べられます.mov";
|
||||
$f = dirname(__FILE__) . DIRECTORY_SEPARATOR . $f_base;
|
||||
unlink($f);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(15) "video/quicktime"
|
||||
+++DONE+++
|
||||
|
||||
@@ -377,6 +377,7 @@ ZEND_END_ARG_INFO()
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_imagewebp, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, im)
|
||||
ZEND_ARG_INFO(0, to)
|
||||
ZEND_ARG_INFO(0, quality)
|
||||
ZEND_END_ARG_INFO()
|
||||
#endif
|
||||
|
||||
|
||||
@@ -53,12 +53,17 @@ int gdImageGrayScale(gdImagePtr src)
|
||||
int new_pxl, pxl;
|
||||
typedef int (*FuncPtr)(gdImagePtr, int, int);
|
||||
FuncPtr f;
|
||||
int alpha_blending;
|
||||
|
||||
f = GET_PIXEL_FUNCTION(src);
|
||||
|
||||
if (src==NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
alpha_blending = src->alphaBlendingFlag;
|
||||
gdImageAlphaBlending(src, gdEffectReplace);
|
||||
|
||||
for (y=0; y<src->sy; ++y) {
|
||||
for (x=0; x<src->sx; ++x) {
|
||||
pxl = f (src, x, y);
|
||||
@@ -75,6 +80,8 @@ int gdImageGrayScale(gdImagePtr src)
|
||||
gdImageSetPixel (src, x, y, new_pxl);
|
||||
}
|
||||
}
|
||||
gdImageAlphaBlending(src, alpha_blending);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -147,6 +147,9 @@ gdImagePtr gdImageCreateFromGifCtx(gdIOCtxPtr fd) /* {{{ */
|
||||
int haveGlobalColormap;
|
||||
gdImagePtr im = 0;
|
||||
|
||||
memset(ColorMap, 0, 3 * MAXCOLORMAPSIZE);
|
||||
memset(localColorMap, 0, 3 * MAXCOLORMAPSIZE);
|
||||
|
||||
/*1.4//imageNumber = 1; */
|
||||
if (! ReadOK(fd,buf,6)) {
|
||||
return 0;
|
||||
|
||||
@@ -1709,13 +1709,28 @@ gdImagePtr gdImageScale(const gdImagePtr src, const unsigned int new_width, cons
|
||||
return im_scaled;
|
||||
}
|
||||
|
||||
static int gdRotatedImageSize(gdImagePtr src, const float angle, gdRectPtr bbox)
|
||||
{
|
||||
gdRect src_area;
|
||||
double m[6];
|
||||
|
||||
gdAffineRotate(m, angle);
|
||||
src_area.x = 0;
|
||||
src_area.y = 0;
|
||||
src_area.width = gdImageSX(src);
|
||||
src_area.height = gdImageSY(src);
|
||||
if (gdTransformAffineBoundingBox(&src_area, m, bbox) != GD_TRUE) {
|
||||
return GD_FALSE;
|
||||
}
|
||||
|
||||
return GD_TRUE;
|
||||
}
|
||||
|
||||
gdImagePtr gdImageRotateNearestNeighbour(gdImagePtr src, const float degrees, const int bgColor)
|
||||
{
|
||||
float _angle = ((float) (-degrees / 180.0f) * (float)M_PI);
|
||||
const int src_w = gdImageSX(src);
|
||||
const int src_h = gdImageSY(src);
|
||||
const unsigned int new_width = (unsigned int)(abs((int)(src_w * cos(_angle))) + abs((int)(src_h * sin(_angle))) + 0.5f);
|
||||
const unsigned int new_height = (unsigned int)(abs((int)(src_w * sin(_angle))) + abs((int)(src_h * cos(_angle))) + 0.5f);
|
||||
const gdFixed f_0_5 = gd_ftofx(0.5f);
|
||||
const gdFixed f_H = gd_itofx(src_h/2);
|
||||
const gdFixed f_W = gd_itofx(src_w/2);
|
||||
@@ -1726,6 +1741,12 @@ gdImagePtr gdImageRotateNearestNeighbour(gdImagePtr src, const float degrees, co
|
||||
unsigned int dst_offset_y = 0;
|
||||
unsigned int i;
|
||||
gdImagePtr dst;
|
||||
gdRect bbox;
|
||||
int new_height, new_width;
|
||||
|
||||
gdRotatedImageSize(src, degrees, &bbox);
|
||||
new_width = bbox.width;
|
||||
new_height = bbox.height;
|
||||
|
||||
if (new_width == 0 || new_height == 0) {
|
||||
return NULL;
|
||||
@@ -1768,8 +1789,6 @@ gdImagePtr gdImageRotateGeneric(gdImagePtr src, const float degrees, const int b
|
||||
const int angle_rounded = (int)floor(degrees * 100);
|
||||
const int src_w = gdImageSX(src);
|
||||
const int src_h = gdImageSY(src);
|
||||
const unsigned int new_width = (unsigned int)(abs((int)(src_w * cos(_angle))) + abs((int)(src_h * sin(_angle))) + 0.5f);
|
||||
const unsigned int new_height = (unsigned int)(abs((int)(src_w * sin(_angle))) + abs((int)(src_h * cos(_angle))) + 0.5f);
|
||||
const gdFixed f_0_5 = gd_ftofx(0.5f);
|
||||
const gdFixed f_H = gd_itofx(src_h/2);
|
||||
const gdFixed f_W = gd_itofx(src_w/2);
|
||||
@@ -1780,11 +1799,13 @@ gdImagePtr gdImageRotateGeneric(gdImagePtr src, const float degrees, const int b
|
||||
unsigned int dst_offset_y = 0;
|
||||
unsigned int i;
|
||||
gdImagePtr dst;
|
||||
int new_width, new_height;
|
||||
gdRect bbox;
|
||||
|
||||
const gdFixed f_slop_y = f_sin;
|
||||
const gdFixed f_slop_x = f_cos;
|
||||
const gdFixed f_slop = f_slop_x > 0 && f_slop_x > 0 ?
|
||||
f_slop_x > f_slop_y ? gd_divfx(f_slop_y, f_slop_x) : gd_divfx(f_slop_x, f_slop_y)
|
||||
const gdFixed f_slop = f_slop_x > 0 && f_slop_y > 0 ?
|
||||
(f_slop_x > f_slop_y ? gd_divfx(f_slop_y, f_slop_x) : gd_divfx(f_slop_x, f_slop_y))
|
||||
: 0;
|
||||
|
||||
|
||||
@@ -1792,6 +1813,10 @@ gdImagePtr gdImageRotateGeneric(gdImagePtr src, const float degrees, const int b
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gdRotatedImageSize(src, degrees, &bbox);
|
||||
new_width = bbox.width;
|
||||
new_height = bbox.height;
|
||||
|
||||
dst = gdImageCreateTrueColor(new_width, new_height);
|
||||
if (!dst) {
|
||||
return NULL;
|
||||
@@ -1831,8 +1856,7 @@ gdImagePtr gdImageRotateBilinear(gdImagePtr src, const float degrees, const int
|
||||
float _angle = (float)((- degrees / 180.0f) * M_PI);
|
||||
const unsigned int src_w = gdImageSX(src);
|
||||
const unsigned int src_h = gdImageSY(src);
|
||||
unsigned int new_width = abs((int)(src_w*cos(_angle))) + abs((int)(src_h*sin(_angle) + 0.5f));
|
||||
unsigned int new_height = abs((int)(src_w*sin(_angle))) + abs((int)(src_h*cos(_angle) + 0.5f));
|
||||
unsigned int new_width, new_height;
|
||||
const gdFixed f_0_5 = gd_ftofx(0.5f);
|
||||
const gdFixed f_H = gd_itofx(src_h/2);
|
||||
const gdFixed f_W = gd_itofx(src_w/2);
|
||||
@@ -1844,6 +1868,12 @@ gdImagePtr gdImageRotateBilinear(gdImagePtr src, const float degrees, const int
|
||||
unsigned int dst_offset_y = 0;
|
||||
unsigned int src_offset_x, src_offset_y;
|
||||
gdImagePtr dst;
|
||||
gdRect bbox;
|
||||
|
||||
gdRotatedImageSize(src, degrees, &bbox);
|
||||
|
||||
new_width = bbox.width;
|
||||
new_height = bbox.height;
|
||||
|
||||
dst = gdImageCreateTrueColor(new_width, new_height);
|
||||
if (dst == NULL) {
|
||||
@@ -1863,7 +1893,7 @@ gdImagePtr gdImageRotateBilinear(gdImagePtr src, const float degrees, const int
|
||||
const unsigned int m = gd_fxtoi(f_m);
|
||||
const unsigned int n = gd_fxtoi(f_n);
|
||||
|
||||
if ((m > 0) && (m < src_h - 1) && (n > 0) && (n < src_w - 1)) {
|
||||
if ((m >= 0) && (m < src_h - 1) && (n >= 0) && (n < src_w - 1)) {
|
||||
const gdFixed f_f = f_m - gd_itofx(m);
|
||||
const gdFixed f_g = f_n - gd_itofx(n);
|
||||
const gdFixed f_w1 = gd_mulfx(f_1-f_f, f_1-f_g);
|
||||
@@ -1871,11 +1901,6 @@ gdImagePtr gdImageRotateBilinear(gdImagePtr src, const float degrees, const int
|
||||
const gdFixed f_w3 = gd_mulfx(f_f, f_1-f_g);
|
||||
const gdFixed f_w4 = gd_mulfx(f_f, f_g);
|
||||
|
||||
if (n < src_w - 1) {
|
||||
src_offset_x = n + 1;
|
||||
src_offset_y = m;
|
||||
}
|
||||
|
||||
if (m < src_h-1) {
|
||||
src_offset_x = n;
|
||||
src_offset_y = m + 1;
|
||||
@@ -1890,13 +1915,13 @@ gdImagePtr gdImageRotateBilinear(gdImagePtr src, const float degrees, const int
|
||||
register int pixel2, pixel3, pixel4;
|
||||
|
||||
if (src_offset_y + 1 >= src_h) {
|
||||
pixel2 = bgColor;
|
||||
pixel3 = bgColor;
|
||||
pixel4 = bgColor;
|
||||
pixel2 = pixel1;
|
||||
pixel3 = pixel1;
|
||||
pixel4 = pixel1;
|
||||
} else if (src_offset_x + 1 >= src_w) {
|
||||
pixel2 = bgColor;
|
||||
pixel3 = bgColor;
|
||||
pixel4 = bgColor;
|
||||
pixel2 = pixel1;
|
||||
pixel3 = pixel1;
|
||||
pixel4 = pixel1;
|
||||
} else {
|
||||
pixel2 = src->tpixels[src_offset_y][src_offset_x + 1];
|
||||
pixel3 = src->tpixels[src_offset_y + 1][src_offset_x];
|
||||
@@ -1946,8 +1971,7 @@ gdImagePtr gdImageRotateBicubicFixed(gdImagePtr src, const float degrees, const
|
||||
const float _angle = (float)((- degrees / 180.0f) * M_PI);
|
||||
const int src_w = gdImageSX(src);
|
||||
const int src_h = gdImageSY(src);
|
||||
const unsigned int new_width = abs((int)(src_w*cos(_angle))) + abs((int)(src_h*sin(_angle) + 0.5f));
|
||||
const unsigned int new_height = abs((int)(src_w*sin(_angle))) + abs((int)(src_h*cos(_angle) + 0.5f));
|
||||
unsigned int new_width, new_height;
|
||||
const gdFixed f_0_5 = gd_ftofx(0.5f);
|
||||
const gdFixed f_H = gd_itofx(src_h/2);
|
||||
const gdFixed f_W = gd_itofx(src_w/2);
|
||||
@@ -1963,7 +1987,11 @@ gdImagePtr gdImageRotateBicubicFixed(gdImagePtr src, const float degrees, const
|
||||
unsigned int dst_offset_y = 0;
|
||||
unsigned int i;
|
||||
gdImagePtr dst;
|
||||
gdRect bbox;
|
||||
|
||||
gdRotatedImageSize(src, degrees, &bbox);
|
||||
new_width = bbox.width;
|
||||
new_height = bbox.height;
|
||||
dst = gdImageCreateTrueColor(new_width, new_height);
|
||||
|
||||
if (dst == NULL) {
|
||||
@@ -2206,8 +2234,11 @@ gdImagePtr gdImageRotateBicubicFixed(gdImagePtr src, const float degrees, const
|
||||
|
||||
gdImagePtr gdImageRotateInterpolated(const gdImagePtr src, const float angle, int bgcolor)
|
||||
{
|
||||
const int angle_rounded = (int)floor(angle * 100);
|
||||
|
||||
/* round to two decimals and keep the 100x multiplication to use it in the common square angles
|
||||
case later. Keep the two decimal precisions so smaller rotation steps can be done, useful for
|
||||
slow animations, f.e. */
|
||||
const int angle_rounded = fmod((int) floorf(angle * 100), 360 * 100);
|
||||
|
||||
if (bgcolor < 0) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -2224,6 +2255,18 @@ gdImagePtr gdImageRotateInterpolated(const gdImagePtr src, const float angle, in
|
||||
|
||||
/* no interpolation needed here */
|
||||
switch (angle_rounded) {
|
||||
case 0: {
|
||||
gdImagePtr dst = gdImageCreateTrueColor(src->sx, src->sy);
|
||||
if (dst == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
dst->transparent = src->transparent;
|
||||
dst->saveAlphaFlag = 1;
|
||||
dst->alphaBlendingFlag = gdEffectReplace;
|
||||
|
||||
gdImageCopy(dst, src, 0,0,0,0,src->sx,src->sy);
|
||||
return dst;
|
||||
}
|
||||
case -27000:
|
||||
case 9000:
|
||||
return gdImageRotate90(src, 0);
|
||||
|
||||
+4
-1
@@ -164,7 +164,10 @@ readwbmp (int (*getin) (void *in), void *in, Wbmp ** return_wbmp)
|
||||
}
|
||||
|
||||
if (skipheader (getin, in))
|
||||
return (-1);
|
||||
{
|
||||
gdFree (wbmp);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
||||
wbmp->width = getmbi (getin, in);
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 384 KiB After Width: | Height: | Size: 7.4 KiB |
Loaded 100 of 362 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user