mirror of
https://github.com/bdnugget/php-src.git
synced 2026-11-11 11:10:49 +00:00
Compare commits
643
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
486e05d2f2 | ||
|
|
894cfb078b | ||
|
|
b892d762e5 | ||
|
|
6672b31c45 | ||
|
|
cafb45221f | ||
|
|
3be1f24fba | ||
|
|
b8251d54a8 | ||
|
|
1ee8ff3b7d | ||
|
|
992d32c6a7 | ||
|
|
ac1ae51a38 | ||
|
|
7d1eef4aa7 | ||
|
|
5d5951f247 | ||
|
|
8ec6ada087 | ||
|
|
ae40e5f400 | ||
|
|
7b68c1e634 | ||
|
|
1cf3ec5eab | ||
|
|
774e127a00 | ||
|
|
43edfb2710 | ||
|
|
c4b7abb4ea | ||
|
|
987c843674 | ||
|
|
d5899d0b33 | ||
|
|
efcfbc953e | ||
|
|
c4d83a413c | ||
|
|
5bd0be8a15 | ||
|
|
46ac1e373a | ||
|
|
5c2477a0d8 | ||
|
|
8237737bd9 | ||
|
|
4eb7fc8aa6 | ||
|
|
293f710827 | ||
|
|
7fb6b5ca98 | ||
|
|
37dab6afee | ||
|
|
74b693f16b | ||
|
|
6d64b2a4c9 | ||
|
|
217382d4ef | ||
|
|
5f75a28d01 | ||
|
|
8f80896718 | ||
|
|
05763e18bb | ||
|
|
3dafd9549d | ||
|
|
85bf6f0329 | ||
|
|
aa2ec7517e | ||
|
|
819be8a3b2 | ||
|
|
1b416caeb1 | ||
|
|
0c2ee427d7 | ||
|
|
e788932a91 | ||
|
|
cf6b208cab | ||
|
|
93fcf04fc1 | ||
|
|
c9a0fbe122 | ||
|
|
c1d43480cc | ||
|
|
92ef080a2e | ||
|
|
f5b05ce162 | ||
|
|
0d7226ed60 | ||
|
|
778edca904 | ||
|
|
f8e21c395b | ||
|
|
d70a9f988d | ||
|
|
10c20ceaf4 | ||
|
|
6c07bc8004 | ||
|
|
08ddf683fc | ||
|
|
71a5c3d7ec | ||
|
|
bbe8518456 | ||
|
|
12081f5659 | ||
|
|
113e304dcf | ||
|
|
d10755c0e6 | ||
|
|
955b801fea | ||
|
|
887f30dc61 | ||
|
|
8d6e997315 | ||
|
|
0806f78f77 | ||
|
|
f4554096e1 | ||
|
|
3964ddd1c4 | ||
|
|
e3da6ac3da | ||
|
|
6481440f3f | ||
|
|
23a5f873fb | ||
|
|
6e1f77ef6b | ||
|
|
606d61bd1c | ||
|
|
2b309c8f9e | ||
|
|
22be55e6da | ||
|
|
370d483bcb | ||
|
|
249667f9e3 | ||
|
|
fd0009d8d6 | ||
|
|
cff7a300d1 | ||
|
|
52cc62d825 | ||
|
|
21abc2f1c1 | ||
|
|
4b9857e7a4 | ||
|
|
f7ee12e928 | ||
|
|
ccae79a2c3 | ||
|
|
262492a187 | ||
|
|
06d5c9a8f0 | ||
|
|
0ff4d7d811 | ||
|
|
23c4c46b36 | ||
|
|
b498b5dfe5 | ||
|
|
ba3498ea33 | ||
|
|
c2ca352598 | ||
|
|
d42a0aee91 | ||
|
|
e854b05aea | ||
|
|
6210bf0dba | ||
|
|
209bfe82e5 | ||
|
|
9d80c25005 | ||
|
|
1a615eeaa2 | ||
|
|
75fa63b57f | ||
|
|
bb16e23891 | ||
|
|
0ec1758381 | ||
|
|
86ed2eeb5d | ||
|
|
a54847a0fb | ||
|
|
6a504c6f6b | ||
|
|
55aab4e6de | ||
|
|
9b1ba00a1e | ||
|
|
c92904d160 | ||
|
|
a76f790b58 | ||
|
|
17af8b0179 | ||
|
|
c776180f6e | ||
|
|
0e37aa144f | ||
|
|
c7a8bd6a4c | ||
|
|
f4009b52a3 | ||
|
|
bc0d535f5a | ||
|
|
60857e013b | ||
|
|
ae2e75a657 | ||
|
|
21fb2a42cc | ||
|
|
3b37e152c3 | ||
|
|
25adf56921 | ||
|
|
cca899148a | ||
|
|
0bcbaa1750 | ||
|
|
9277da7d9d | ||
|
|
cd7681d273 | ||
|
|
031085e0a9 | ||
|
|
f75714650b | ||
|
|
14ed144318 | ||
|
|
baf834a00a | ||
|
|
68ff1463e7 | ||
|
|
d846d0e80a | ||
|
|
10da251565 | ||
|
|
f472141549 | ||
|
|
0afd4bd18b | ||
|
|
087a134b50 | ||
|
|
00a6dd29b7 | ||
|
|
14e7d404d9 | ||
|
|
a62829c09e | ||
|
|
479a47d8af | ||
|
|
7af15a41d9 | ||
|
|
47315dfdf6 | ||
|
|
f7cdabd118 | ||
|
|
e6c9a31c54 | ||
|
|
83d01bd81b | ||
|
|
f4f2aa7583 | ||
|
|
cb7f656de7 | ||
|
|
b903587268 | ||
|
|
b97e76d512 | ||
|
|
e69b73e0b8 | ||
|
|
e2ac61225f | ||
|
|
c989a36927 | ||
|
|
3d7a201eb4 | ||
|
|
e91cecb1d3 | ||
|
|
b7eefa0af7 | ||
|
|
a65eba016e | ||
|
|
3b030ec75f | ||
|
|
07bcf1080d | ||
|
|
69a12bfb3f | ||
|
|
ef74038d1d | ||
|
|
6ff2f7040e | ||
|
|
490b75d170 | ||
|
|
8267eaf1bf | ||
|
|
885357a711 | ||
|
|
983cedfd94 | ||
|
|
4bf9334a82 | ||
|
|
35c42425fa | ||
|
|
e2caad5f96 | ||
|
|
6814cbec4b | ||
|
|
bed49c931d | ||
|
|
e38369c532 | ||
|
|
5cf61f4d8b | ||
|
|
86eae702f2 | ||
|
|
0d8e83532a | ||
|
|
ee920e12ec | ||
|
|
e9f4cfd6af | ||
|
|
00169ec00f | ||
|
|
508f926604 | ||
|
|
ba8ce4a6d4 | ||
|
|
f7e6e6cedf | ||
|
|
6f3c7a8b70 | ||
|
|
00842d6996 | ||
|
|
e40c470c9d | ||
|
|
221a07b669 | ||
|
|
8e314ae7fc | ||
|
|
edcc7dce4e | ||
|
|
8f71a6f673 | ||
|
|
9aa379c724 | ||
|
|
2ee837aa5e | ||
|
|
a417820be3 | ||
|
|
1eb7704974 | ||
|
|
2ea7c05d75 | ||
|
|
85de397a23 | ||
|
|
66d5eb12a9 | ||
|
|
f551ed4189 | ||
|
|
23cab07e4f | ||
|
|
36fde4043b | ||
|
|
a944f7a663 | ||
|
|
c61d125986 | ||
|
|
38c1181cfa | ||
|
|
2957b7cbb6 | ||
|
|
e9efaea7c4 | ||
|
|
2f5dc540e0 | ||
|
|
76425aaca1 | ||
|
|
c4e6beebb3 | ||
|
|
9ea582a76c | ||
|
|
df2ca16fa8 | ||
|
|
3e17b49008 | ||
|
|
9e5bc2c138 | ||
|
|
d257aa42ff | ||
|
|
78a15091f9 | ||
|
|
24be7e2106 | ||
|
|
2ce1fd71ea | ||
|
|
4ab19212e5 | ||
|
|
d91d06af30 | ||
|
|
6613fefb80 | ||
|
|
74b8f72017 | ||
|
|
27fc1b889a | ||
|
|
66ce68e7a4 | ||
|
|
df0ce635e4 | ||
|
|
a0857d56ac | ||
|
|
2954832b97 | ||
|
|
c2a245f582 | ||
|
|
5dcdf5c467 | ||
|
|
cab76530e7 | ||
|
|
a7dbf5a29e | ||
|
|
229bdc7ccb | ||
|
|
20f4ea9de8 | ||
|
|
6242101f2b | ||
|
|
4a8eeb7afb | ||
|
|
8f77168384 | ||
|
|
cde80bd812 | ||
|
|
c11e307ae0 | ||
|
|
9bf9b88f20 | ||
|
|
3e46e95ac1 | ||
|
|
8f8a54ab37 | ||
|
|
176c6fe901 | ||
|
|
0bce4957e5 | ||
|
|
278392a10b | ||
|
|
5bac59b7d1 | ||
|
|
93ce043480 | ||
|
|
f3cd7fdda4 | ||
|
|
a2e0e2564d | ||
|
|
02302812e1 | ||
|
|
6df67ace20 | ||
|
|
7a80c3a0ed | ||
|
|
3841295b2a | ||
|
|
fc7ee596f6 | ||
|
|
6c564a7802 | ||
|
|
a44515caf9 | ||
|
|
3d347be242 | ||
|
|
8192ba2b60 | ||
|
|
1a4897c88e | ||
|
|
2d0ab7c98b | ||
|
|
cd4928c99a | ||
|
|
e510daf20b | ||
|
|
be3d70df4e | ||
|
|
be24877c84 | ||
|
|
e575557612 | ||
|
|
21f71027e3 | ||
|
|
e85c367bc7 | ||
|
|
1153eaf505 | ||
|
|
c157f4b4e6 | ||
|
|
1dd5690af2 | ||
|
|
5ca8ba7ab6 | ||
|
|
a0d805035c | ||
|
|
339f46237d | ||
|
|
1b6dd18082 | ||
|
|
92e5b10c41 | ||
|
|
833ec62d7c | ||
|
|
782c00d744 | ||
|
|
2e206e0761 | ||
|
|
0e80f26207 | ||
|
|
047ed8dfbb | ||
|
|
f2cfb997de | ||
|
|
def1ab1e60 | ||
|
|
3e36ecd98f | ||
|
|
03b6daed4f | ||
|
|
840308cfd0 | ||
|
|
f9721d03f7 | ||
|
|
cd2cdd256a | ||
|
|
2975308e1a | ||
|
|
e8486cc374 | ||
|
|
47012ccd8f | ||
|
|
4919f3286b | ||
|
|
2c76af8538 | ||
|
|
689268a0ba | ||
|
|
88c1755a14 | ||
|
|
dd5781bcdf | ||
|
|
ef777fc18e | ||
|
|
1dbfe6e310 | ||
|
|
3c6104e180 | ||
|
|
f335f27b7b | ||
|
|
4551bd57f7 | ||
|
|
4ad6108b7d | ||
|
|
9aec0c6806 | ||
|
|
4929964a5d | ||
|
|
018013e579 | ||
|
|
8b33e6fae0 | ||
|
|
a270348c24 | ||
|
|
f2ce3e0201 | ||
|
|
0ab7f1cebf | ||
|
|
8ca08487b7 | ||
|
|
3c364cbe52 | ||
|
|
13a91f86b7 | ||
|
|
8307f9e892 | ||
|
|
5b85234b37 | ||
|
|
660aa6701d | ||
|
|
0dd448cbf1 | ||
|
|
5572becc81 | ||
|
|
3595f09c28 | ||
|
|
081b001ca1 | ||
|
|
9484248c0a | ||
|
|
c5c87c5f37 | ||
|
|
334d2df892 | ||
|
|
68811c473d | ||
|
|
95a3bfb1bc | ||
|
|
f06e3ba5c1 | ||
|
|
8a48311a60 | ||
|
|
ab7992fab2 | ||
|
|
5b55a18622 | ||
|
|
5a53a74304 | ||
|
|
be87834321 | ||
|
|
8bbd451647 | ||
|
|
d37dea8b7b | ||
|
|
1e86e8e12c | ||
|
|
07aa25b442 | ||
|
|
2b8d0edb45 | ||
|
|
5fb54640c9 | ||
|
|
56cdee2def | ||
|
|
27e640fdea | ||
|
|
f5687db392 | ||
|
|
6f15da050e | ||
|
|
6e35b40b4c | ||
|
|
0778bedbe1 | ||
|
|
e90ac23f58 | ||
|
|
b78ac8df82 | ||
|
|
d7b8f23e2b | ||
|
|
50b56c2c0f | ||
|
|
6da18ca967 | ||
|
|
8d816ed0ef | ||
|
|
e68e2893c0 | ||
|
|
ee832705d1 | ||
|
|
7e34334d84 | ||
|
|
94b3d60a4f | ||
|
|
dd68a6239a | ||
|
|
39d814a205 | ||
|
|
5009770d65 | ||
|
|
c7e7de3485 | ||
|
|
2843030fa1 | ||
|
|
e1a746faec | ||
|
|
4653ef06f9 | ||
|
|
06e475e537 | ||
|
|
c256372636 | ||
|
|
3986e515da | ||
|
|
2f3f629fd4 | ||
|
|
bf5a3715f4 | ||
|
|
0ec8364402 | ||
|
|
a497999481 | ||
|
|
53b1c76efe | ||
|
|
5d83ad8c44 | ||
|
|
f657ba978b | ||
|
|
1f991c8e42 | ||
|
|
a5348bed31 | ||
|
|
2eb5b0fe4e | ||
|
|
d4a1f5ac06 | ||
|
|
113cd9dc0f | ||
|
|
e79bf567e8 | ||
|
|
a82a9e8f74 | ||
|
|
f15452af96 | ||
|
|
0448336c2c | ||
|
|
7a1f54ff42 | ||
|
|
00b10c6aa3 | ||
|
|
69ba87b183 | ||
|
|
7deec592fd | ||
|
|
5261861d77 | ||
|
|
3242016f28 | ||
|
|
1b2d14c5e1 | ||
|
|
54a7e5d7c3 | ||
|
|
5b442c82f0 | ||
|
|
e78a5127c8 | ||
|
|
5bef6665f9 | ||
|
|
18127da570 | ||
|
|
4dc641e3f5 | ||
|
|
02d03711ec | ||
|
|
88448a263c | ||
|
|
1bdc780d30 | ||
|
|
d41c8bd74a | ||
|
|
a8806be989 | ||
|
|
64f45d8fe8 | ||
|
|
5a3c4892af | ||
|
|
594aaf1b1b | ||
|
|
7c1a9e37ca | ||
|
|
011143d1bf | ||
|
|
9b4ada5c0e | ||
|
|
8a485c7c91 | ||
|
|
0f842f667a | ||
|
|
ac057c610c | ||
|
|
f87e92860a | ||
|
|
82dd0b9db0 | ||
|
|
14c6cc5b7f | ||
|
|
ed2cdf31d3 | ||
|
|
588ec26d2f | ||
|
|
ff5dffdabb | ||
|
|
0814b80006 | ||
|
|
7ea26a58bc | ||
|
|
9b567fea6a | ||
|
|
5fad615ff5 | ||
|
|
6dfee4f877 | ||
|
|
6fba6737d5 | ||
|
|
2cfc526bcb | ||
|
|
5b521b71a2 | ||
|
|
44b9942ef3 | ||
|
|
555e42fb5a | ||
|
|
145c4cbc56 | ||
|
|
a888ee434b | ||
|
|
218448bfa0 | ||
|
|
07fb5ca429 | ||
|
|
ee36a3d313 | ||
|
|
4bf6559ed0 | ||
|
|
a7d4b80ca2 | ||
|
|
521e5462ab | ||
|
|
34a9ff9e49 | ||
|
|
e15dd93e7e | ||
|
|
fac1e87171 | ||
|
|
36d82e8a85 | ||
|
|
c9e94fe753 | ||
|
|
da0e2a416f | ||
|
|
6157793026 | ||
|
|
5ca051bf38 | ||
|
|
baf5d66614 | ||
|
|
973ca132a4 | ||
|
|
e08473da6c | ||
|
|
23437f011c | ||
|
|
c924dedb73 | ||
|
|
bd810ef9bc | ||
|
|
4a2b458835 | ||
|
|
6e57a7792e | ||
|
|
71f3d3793d | ||
|
|
7eca674e59 | ||
|
|
5bab8ea920 | ||
|
|
977d79a724 | ||
|
|
f386967b77 | ||
|
|
b45066df97 | ||
|
|
0b474317fd | ||
|
|
e9c6830e16 | ||
|
|
4ac34cc84b | ||
|
|
d56de24ce7 | ||
|
|
0393cf77fc | ||
|
|
7ac71b4f7f | ||
|
|
9d568bb4f5 | ||
|
|
56316d25d4 | ||
|
|
ecbbe16a8b | ||
|
|
cad4c34510 | ||
|
|
8e57ad193b | ||
|
|
3050d45a95 | ||
|
|
779e88e323 | ||
|
|
97fffa7826 | ||
|
|
e9d18e09d9 | ||
|
|
4756d7c2c8 | ||
|
|
266084e844 | ||
|
|
783285e62a | ||
|
|
0bbc886842 | ||
|
|
f4c468481a | ||
|
|
131b658982 | ||
|
|
af9406de8e | ||
|
|
0dcf2de5ac | ||
|
|
54e9aa9110 | ||
|
|
d83d01a32e | ||
|
|
a0708af925 | ||
|
|
ed5594f135 | ||
|
|
17c1ba460d | ||
|
|
7f3100976f | ||
|
|
28d95f8e63 | ||
|
|
0e61859b1f | ||
|
|
f1cb5e6253 | ||
|
|
230177d73c | ||
|
|
44e2fa1025 | ||
|
|
c278fb01d0 | ||
|
|
434f3654da | ||
|
|
e0c1332537 | ||
|
|
068a78014f | ||
|
|
fdbc42611c | ||
|
|
0a35d91854 | ||
|
|
15bcc34994 | ||
|
|
e3c920ecf3 | ||
|
|
8cdcdb1b1e | ||
|
|
d6ac882106 | ||
|
|
2c657ee27e | ||
|
|
b3efabda4c | ||
|
|
326f50b1ea | ||
|
|
c8219466e4 | ||
|
|
e3785f253e | ||
|
|
5c23366d6b | ||
|
|
df5f8c91ce | ||
|
|
ad8892f91d | ||
|
|
d244ac46a1 | ||
|
|
ba4fbb05ae | ||
|
|
504b6f695e | ||
|
|
ff4982784a | ||
|
|
3a3f369678 | ||
|
|
97fe653692 | ||
|
|
f144bb7153 | ||
|
|
22b42afaee | ||
|
|
6553823c8b | ||
|
|
25a43268fd | ||
|
|
1ec3ec1326 | ||
|
|
c33795b25b | ||
|
|
9acdcd93a7 | ||
|
|
64bbdd76c3 | ||
|
|
58810bd055 | ||
|
|
c83278ef22 | ||
|
|
92d82619d7 | ||
|
|
3abf598b53 | ||
|
|
484a35373e | ||
|
|
21fba3513a | ||
|
|
a209aad993 | ||
|
|
639d3fbcfb | ||
|
|
10a1f90ab0 | ||
|
|
ab4ce5516d | ||
|
|
8640b61c68 | ||
|
|
eddd9b7510 | ||
|
|
0d3c6914ad | ||
|
|
92894b3a81 | ||
|
|
fb6778c241 | ||
|
|
279a65eb09 | ||
|
|
55077a81f5 | ||
|
|
eaaef0d870 | ||
|
|
39210df0ed | ||
|
|
29a82ceb56 | ||
|
|
9107b209ea | ||
|
|
84ff832f46 | ||
|
|
e14c8f39f1 | ||
|
|
e4fe297006 | ||
|
|
e1c1cc0ed5 | ||
|
|
47fc5e06f0 | ||
|
|
6f66356d56 | ||
|
|
df344ea7d6 | ||
|
|
02bdb521e2 | ||
|
|
09d73b67e2 | ||
|
|
0017586f5d | ||
|
|
66753ff6c7 | ||
|
|
f01a0cba6b | ||
|
|
ec040e9657 | ||
|
|
d1eb2cd737 | ||
|
|
27177c9868 | ||
|
|
9e0c423bc4 | ||
|
|
3f5ad237e1 | ||
|
|
7d3a0e15f5 | ||
|
|
b059dfa1e7 | ||
|
|
b4ae112dae | ||
|
|
bfb9b6d06e | ||
|
|
ec3003ade1 | ||
|
|
5bd1fd410f | ||
|
|
f62ca3e4bf | ||
|
|
e13c26a141 | ||
|
|
914152d6d8 | ||
|
|
12d2104277 | ||
|
|
927bf09c29 | ||
|
|
3870e58759 | ||
|
|
5eb264677c | ||
|
|
ac216eb88c | ||
|
|
8d9307ace4 | ||
|
|
19ba599166 | ||
|
|
c4a5af24e0 | ||
|
|
6fab69a17d | ||
|
|
2479cd6ec9 | ||
|
|
9ec9210fbc | ||
|
|
cc1759598f | ||
|
|
8e47365a97 | ||
|
|
5b5e89bb36 | ||
|
|
e7d5c4a8fd | ||
|
|
ff32c32fba | ||
|
|
34c6447e9e | ||
|
|
cd34d68cdd | ||
|
|
a68864969e | ||
|
|
880d61e9c6 | ||
|
|
8f44d2ca36 | ||
|
|
e427e312d4 | ||
|
|
399182de3f | ||
|
|
3ce18aa852 | ||
|
|
f13d9c0e03 | ||
|
|
25c5841160 | ||
|
|
671ac356e6 | ||
|
|
b0fa53adcc | ||
|
|
0d7487da46 | ||
|
|
1be3dc76af | ||
|
|
fd161b8ea1 | ||
|
|
349082267f | ||
|
|
96b6130930 | ||
|
|
e77d3268d7 | ||
|
|
2070f153f9 | ||
|
|
9cb1b1e948 | ||
|
|
4a8438b3e1 | ||
|
|
6f94e2dd2a | ||
|
|
17b8336047 | ||
|
|
4e08abeead | ||
|
|
1cf5713dd3 | ||
|
|
f35b89c7c4 | ||
|
|
c4f631b275 | ||
|
|
c05b1228db | ||
|
|
f56ab54feb | ||
|
|
f7b5a73383 | ||
|
|
e2ea0f5d98 | ||
|
|
07607df542 | ||
|
|
c946ff2f51 | ||
|
|
64d49da654 | ||
|
|
630d411c5c | ||
|
|
101bb97773 | ||
|
|
d14417f8ea | ||
|
|
acd87493ec | ||
|
|
12a3e339f4 | ||
|
|
0beae1e558 | ||
|
|
aea6771d19 | ||
|
|
4ee6b4dfbb | ||
|
|
8afdb7cd49 | ||
|
|
5a6288297d | ||
|
|
a990ce69b1 | ||
|
|
75a9b76a3e | ||
|
|
e87fbccfd8 | ||
|
|
75de05cead | ||
|
|
2fbc49793e | ||
|
|
fbe4532b48 | ||
|
|
82287511ad | ||
|
|
c1e9f628a0 | ||
|
|
071513562d | ||
|
|
b529d43c0d | ||
|
|
79aaaf4179 | ||
|
|
95c4e449d1 | ||
|
|
f6cedd2ad5 | ||
|
|
9e48381b28 | ||
|
|
ff77814d03 | ||
|
|
3c8c56fb98 | ||
|
|
9864040e35 | ||
|
|
cccba0fa4d | ||
|
|
83a7831760 | ||
|
|
215917d711 | ||
|
|
df5f526cbd | ||
|
|
d9187596c9 | ||
|
|
35c47c58df | ||
|
|
8b1d477052 | ||
|
|
7d2b089860 | ||
|
|
573475a848 | ||
|
|
7eb70247a3 | ||
|
|
30d290a31e | ||
|
|
78a2762e88 | ||
|
|
85b434465c |
No files matched your search
@@ -1,5 +1,506 @@
|
||||
PHP NEWS
|
||||
PHP NEWS
|
||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
14 Jul 2011, PHP 5.3.7 RC3
|
||||
- Zend Engine:
|
||||
. Fixed bug #55156 (ReflectionClass::getDocComment() returns comment even
|
||||
though the class has none). (Felipe)
|
||||
|
||||
- Core
|
||||
. Fixed bug #55187 (readlink returns weird characters when false result).
|
||||
(Pierre)
|
||||
. Fixed bug #55014 (Compile failure due to improper use of ctime_r()). (Ilia)
|
||||
. Fixed bug #54332 (Crash in zend_mm_check_ptr // Heap corruption). (Dmitry)
|
||||
. Fixed bug #54305 (Crash in gc_remove_zval_from_buffer). (Dmitry)
|
||||
. Fixed bug #53727 (Inconsistent behavior of is_subclass_of with interfaces)
|
||||
(Ralph Schindler, Dmitry)
|
||||
. Fixed buffer overflow on overlog salt in crypt(). (Clément LECIGNE, Stas)
|
||||
. Fixed bug #52935 (call exit in user_error_handler cause stream relate
|
||||
core). (Gustavo)
|
||||
|
||||
|
||||
- MCrypt
|
||||
. Change E_ERROR to E_WARNING in mcrypt_create_iv when not enough data
|
||||
has been fetched (Windows). (Pierre)
|
||||
. Fixed bug #55169 (mcrypt_create_iv always fails to gather sufficient random
|
||||
data on Windows). (Pierre)
|
||||
|
||||
- PDO DBlib:
|
||||
. Fixed bug #54329 (MSSql extension memory leak).
|
||||
(dotslashpok at gmail dot com)
|
||||
|
||||
30 Jun 2011, PHP 5.3.7 RC2
|
||||
- Core:
|
||||
. Fixed crash in error_log(). (Felipe) Reported by Mateusz Kocielski.
|
||||
. Fixed bug #55082 (var_export() doesn't escape properties properly).
|
||||
(Gustavo)
|
||||
|
||||
- DateTime extension:
|
||||
. Fixed bug where the DateTime object got changed while using date_diff().
|
||||
(Derick)
|
||||
|
||||
- DBA extension:
|
||||
. Supress warning on non-existent file open with Berkeley DB 5.2 (Chris Jones)
|
||||
|
||||
- PDO ODBC driver:
|
||||
. Fixed data type usage in 64bit. (leocsilva at gmail dot com)
|
||||
|
||||
- PHP-FPM SAPI:
|
||||
. Implemented FR #54499 (FPM ping and status_path should handle HEAD request). (fat)
|
||||
. Implemented FR #54172 (Overriding the pid file location of php-fpm). (fat)
|
||||
. Fixed missing Expires and Cache-Control headers for ping and status pages.
|
||||
(fat)
|
||||
. Fixed memory leak. (fat) Reported and fixed by Giovanni Giacobbi.
|
||||
. Fixed wrong value of log_level when invoking fpm with -tt. (fat)
|
||||
|
||||
- SPL extension:
|
||||
. Fixed bug #54971 (Wrong result when using iterator_to_array with use_keys
|
||||
on true). (Pierrick)
|
||||
|
||||
16 Jun 2011, PHP 5.3.7 RC1
|
||||
- Upgraded bundled SQLite to version 3.7.6.3. (Scott)
|
||||
- Upgraded bundled PCRE to version 8.12. (Scott)
|
||||
- Increased the backtrack limit from 100000 to 1000000 (Rasmus)
|
||||
|
||||
- Zend Engine:
|
||||
. Fixed bug #55007 (compiler fail after previous fail). (Felipe)
|
||||
. Fixed bug #54910 (Crash when calling call_user_func with unknown function
|
||||
name). (Dmitry)
|
||||
. Fixed bug #54804 (__halt_compiler and imported namespaces).
|
||||
(Pierrick, Felipe)
|
||||
. Fixed bug #54624 (class_alias and type hint). (Felipe)
|
||||
. Fixed bug #54585 (track_errors causes segfault). (Dmitry)
|
||||
. Fixed bug #54423 (classes from dl()'ed extensions are not destroyed).
|
||||
(Tony, Dmitry)
|
||||
. Fixed bug #54372 (Crash accessing global object itself returned from its
|
||||
__get() handle). (Dmitry)
|
||||
. Fixed bug #54358 (Closure, use and reference). (Dmitry)
|
||||
. Fixed bug #54367 (Use of closure causes problem in ArrayAccess). (Dmitry)
|
||||
. Fixed bug #54039 (use() of static variables in lambda functions can break
|
||||
staticness). (Dmitry)
|
||||
. Fixed bug #54262 (Crash when assigning value to a dimension in a non-array).
|
||||
(Dmitry)
|
||||
|
||||
- Core:
|
||||
. Implemented FR #54459 (Range function accuracy). (Adam)
|
||||
. Added PHP_MANDIR constant telling where the manpages were installed into,
|
||||
and an --man-dir argument to php-config. (Hannes)
|
||||
|
||||
. Fixed a crash inside dtor for error handling. (Ilia)
|
||||
. Fixed bug #54939 (File path injection vulnerability in RFC1867 File upload
|
||||
filename). (Felipe) Reported by Krzysztof Kotowicz. (CVE-2011-2202)
|
||||
|
||||
. Fixed bug #54935 php_win_err can lead to crash. (Pierre)
|
||||
. Fixed bug #54924 (assert.* is not being reset upon request shutdown). (Ilia)
|
||||
. Fixed bug #54895 (Fix compiling with older gcc version without need for
|
||||
membar_producer macro). (mhei at heimpold dot de)
|
||||
. Fixed bug #54723 (getimagesize() doesn't check the full ico signature).
|
||||
(Scott)
|
||||
. Fixed bug #54580 (get_browser() segmentation fault when browscap ini
|
||||
directive is set through php_admin_value). (Gustavo)
|
||||
. Fixed bug #54238 (use-after-free in substr_replace()). (Stas)
|
||||
(CVE-2011-1148)
|
||||
. Fixed bug #54180 (parse_url() incorrectly parses path when ? in fragment).
|
||||
(tomas dot brastavicius at quantum dot lt, Pierrick)
|
||||
. Fixed bug #54137 (file_get_contents POST request sends additional line
|
||||
break). (maurice-php at mertinkat dot net, Ilia)
|
||||
. Fixed bug #54866 (incorrect accounting for realpath_cache_size).
|
||||
(Dustin Ward)
|
||||
. Fixed bug #54721 (Different Hashes on Windows, BSD and Linux on wrong Salt
|
||||
size). (Pierre, os at irj dot ru)
|
||||
. Fixed bug #53848 (fgetcsv() ignores spaces at beginnings of fields). (Ilia)
|
||||
. Alternative fix for bug #52550, as applied to the round() function (signed
|
||||
overflow), as the old fix impacted the algorithm for numbers with magnitude
|
||||
smaller than 0. (Gustavo)
|
||||
. Fixed bug #51997 (SEEK_CUR with 0 value, returns a warning). (Ilia)
|
||||
. Fixed bug #50363 (Invalid parsing in convert.quoted-printable-decode
|
||||
filter). (slusarz at curecanti dot org)
|
||||
. Fixed bug #48465 (sys_get_temp_dir() possibly inconsistent when using
|
||||
TMPDIR on Windows). (Pierre)
|
||||
|
||||
- Apache2 Handler SAPI:
|
||||
. Fixed bug #54529 (SAPI crashes on apache_config.c:197).
|
||||
(hebergement at riastudio dot fr)
|
||||
|
||||
- CLI SAPI:
|
||||
. Fixed bug #52496 (Zero exit code on option parsing failure). (Ilia)
|
||||
|
||||
- cURL:
|
||||
. Added ini option curl.cainfo (support for custom cert db). (Pierre)
|
||||
. Added CURLINFO_REDIRECT_URL support. (Daniel Stenberg, Pierre)
|
||||
. Added support for CURLOPT_MAX_RECV_SPEED_LARGE and
|
||||
CURLOPT_MAX_SEND_SPEED_LARGE. FR #51815. (Pierrick)
|
||||
|
||||
- DateTime extension:
|
||||
. Fixed bug #54340 (DateTime::add() method bug). (Adam)
|
||||
. Fixed bug #54316 (DateTime::createFromFormat does not handle trailing '|'
|
||||
correctly). (Adam)
|
||||
. Fixed bug #54283 (new DatePeriod(NULL) causes crash). (Felipe)
|
||||
. Fixed bug #51819 (Case discrepancy in timezone names cause Uncaught
|
||||
exception and fatal error). (Hannes)
|
||||
|
||||
- DBA extension:
|
||||
. Fixed bug #54242 (dba_insert returns true if key already exists). (Felipe)
|
||||
|
||||
- Exif extesion:
|
||||
. Fixed bug #54121 (error message format string typo). (Ilia)
|
||||
|
||||
- Fileinfo extension:
|
||||
. Fixed bug #54934 (Unresolved symbol strtoull in HP-UX 11.11). (Felipe)
|
||||
|
||||
- Filter extension:
|
||||
. Added 3rd parameter to filter_var_array() and filter_input_array()
|
||||
functions that allows disabling addition of empty elements. (Ilia)
|
||||
. Fixed bug #53037 (FILTER_FLAG_EMPTY_STRING_NULL is not implemented). (Ilia)
|
||||
|
||||
- Interbase extension:
|
||||
. Fixed bug #54269 (Short exception message buffer causes crash). (Felipe)
|
||||
|
||||
- intl extension:
|
||||
. Implemented FR #54540 (Allow loading of arbitrary resource bundles when
|
||||
fallback is disabled). (David Zuelke, Stas)
|
||||
. Implemented FR #54561 (Expose ICU version info). (David Zuelke, Ilia)
|
||||
|
||||
- json extension:
|
||||
. Fixed bug #54484 (Empty string in json_decode doesn't reset
|
||||
json_last_error()). (Ilia)
|
||||
|
||||
- LDAP extension:
|
||||
. Fixed bug #53339 (Fails to build when compilng with gcc 4.5 and DSO
|
||||
libraries). (Clint Byrum, Raphael)
|
||||
|
||||
- libxml extension:
|
||||
. Fixed bug #54601 (Removing the doctype node segfaults). (Hannes)
|
||||
. Fixed bug #54440 (libxml extension ignores default context). (Gustavo)
|
||||
|
||||
- mbstring extension:
|
||||
. Fixed bug #54494 (mb_substr() mishandles UTF-32LE and UCS-2LE). (Gustavo)
|
||||
|
||||
- MySQL Improved extension:
|
||||
. Fixed Bug #54221 (mysqli::get_warnings segfault when used in multi queries).
|
||||
(Andrey)
|
||||
|
||||
- mysqlnd
|
||||
. Fixed crash when using more than 28,000 bound parameters. Workaround is to
|
||||
set mysqlnd.net_cmd_buffer_size to at least 9000. (Andrey)
|
||||
. Fixed bug #54674 mysqlnd valid_sjis_(head|tail) is using invalid operator
|
||||
and range). (nihen at megabbs dot com, Andrey)
|
||||
|
||||
- OpenSSL extension
|
||||
. Fixed bug #54992 (Stream not closed and error not returned when SSL
|
||||
CN_match fails). (Gustavo, laird_ngrps at dodo dot com dot au)
|
||||
|
||||
- Oracle Database extension (OCI8):
|
||||
. Added oci_client_version() returning the runtime Oracle client library
|
||||
version (Chris Jones)
|
||||
|
||||
- PDO extension:
|
||||
. Fixed bug #54929 (Parse error with single quote in sql comment). (Felipe)
|
||||
. Fixed bug #52104 (bindColumn creates Warning regardless of ATTR_ERRMODE
|
||||
settings). (Ilia)
|
||||
|
||||
- PDO DBlib driver:
|
||||
. Fixed bug #54167 (PDO_DBLIB returns null on SQLUNIQUE field).
|
||||
(mjh at hodginsmedia dot com, Felipe)
|
||||
|
||||
- PDO MySQL driver:
|
||||
. Fixed bug #54644 (wrong pathes in php_pdo_mysql_int.h). (Tony, Johannes)
|
||||
. Fixed bug #53782 (foreach throws irrelevant exception). (Johannes, Andrey)
|
||||
. Implemented FR #48587 (MySQL PDO driver doesn't support SSL connections).
|
||||
(Rob)
|
||||
|
||||
- PDO PostgreSQL driver:
|
||||
. Fixed bug #54318 (Non-portable grep option used in PDO pgsql
|
||||
configuration). (bwalton at artsci dot utoronto dot ca)
|
||||
|
||||
- PDO Oracle driver:
|
||||
. Fixed bug #44989 (64bit Oracle RPMs still not supported by pdo-oci).
|
||||
(jbnance at tresgeek dot net)
|
||||
|
||||
- Phar extension:
|
||||
. Fixed bug #54395 (Phar::mount() crashes when calling with wrong parameters).
|
||||
(Felipe)
|
||||
|
||||
- PHP-FPM SAPI:
|
||||
. Added xml format to the status page. (fat)
|
||||
. Removed timestamp in logs written by children processes. (fat)
|
||||
. Fixed exit at FPM startup on fpm_resources_prepare() errors. (fat)
|
||||
. Added master rlimit_files and rlimit_core in the global configuration
|
||||
settings. (fat)
|
||||
. Removed pid in debug logs written by chrildren processes. (fat)
|
||||
. Added custom access log (also added per request %CPU and memory
|
||||
mesurement). (fat)
|
||||
. Added a real scoreboard and several improvements to the status page. (fat)
|
||||
|
||||
- Reflection extension:
|
||||
. Fixed bug #54347 (reflection_extension does not lowercase module function
|
||||
name). (Felipe, laruence at yahoo dot com dot cn)
|
||||
|
||||
- SOAP extension:
|
||||
. Fixed bug #54312 (soap_version logic bug). (tom at samplonius dot org)
|
||||
|
||||
- Sockets extension:
|
||||
. Fixed stack buffer overflow in socket_connect(). (CVE-2011-1938)
|
||||
Found by Mateusz Kocielski, Marek Kroemeke and Filip Palian. (Felipe)
|
||||
. Changed socket_set_block() and socket_set_nonblock() so they emit warnings
|
||||
on error. (Gustavo)
|
||||
. Fixed bug #51958 (socket_accept() fails on IPv6 server sockets). (Gustavo)
|
||||
|
||||
- SPL extension:
|
||||
. Fixed bug #54970 (SplFixedArray::setSize() isn't resizing). (Felipe)
|
||||
. Fixed bug #54609 (Certain implementation(s) of SplFixedArray cause hard
|
||||
crash). (Felipe)
|
||||
. Fixed bug #54384 (Dual iterators, GlobIterator, SplFileObject and
|
||||
SplTempFileObject crash when user-space classes don't call the paren
|
||||
constructor). (Gustavo)
|
||||
. Fixed bug #54292 (Wrong parameter causes crash in
|
||||
SplFileObject::__construct()). (Felipe)
|
||||
. Fixed bug #54291 (Crash iterating DirectoryIterator for dir name starting
|
||||
with \0). (Gustavo)
|
||||
. Fixed bug #54281 (Crash in non-initialized RecursiveIteratorIterator).
|
||||
(Felipe)
|
||||
|
||||
- Streams:
|
||||
. Fixed bug #54946 (stream_get_contents infinite loop). (Hannes)
|
||||
. Fixed bug #54623 (Segfault when writing to a persistent socket after
|
||||
closing a copy of the socket). (Gustavo)
|
||||
|
||||
. Zip extension:
|
||||
. Fixed bug #54681 (addGlob() crashes on invalid flags). (Felipe)
|
||||
|
||||
17 Mar 2011, PHP 5.3.6
|
||||
- Upgraded bundled Sqlite3 to version 3.7.4. (Ilia)
|
||||
- Upgraded bundled PCRE to version 8.11. (Ilia)
|
||||
|
||||
- Zend Engine:
|
||||
. Indirect reference to $this fails to resolve if direct $this is never used
|
||||
in method. (Scott)
|
||||
. Added options to debug backtrace functions. (Stas)
|
||||
. Fixed bug numerous crashes due to setlocale (crash on error, pcre, mysql
|
||||
etc.) on Windows in thread safe mode. (Pierre)
|
||||
. Fixed Bug #53971 (isset() and empty() produce apparently spurious runtime
|
||||
error). (Dmitry)
|
||||
. Fixed Bug #53958 (Closures can't 'use' shared variables by value and by
|
||||
reference). (Dmitry)
|
||||
. Fixed Bug #53629 (memory leak inside highlight_string()). (Hannes, Ilia)
|
||||
. Fixed Bug #51458 (Lack of error context with nested exceptions). (Stas)
|
||||
. Fixed Bug #47143 (Throwing an exception in a destructor causes a fatal
|
||||
error). (Stas)
|
||||
. Fixed bug #43512 (same parameter name can be used multiple times in
|
||||
method/function definition). (Felipe)
|
||||
|
||||
- Core:
|
||||
. Added ability to connect to HTTPS sites through proxy with basic
|
||||
authentication using stream_context/http/header/Proxy-Authorization (Dmitry)
|
||||
. Changed default value of ini directive serialize_precision from 100 to 17.
|
||||
(Gustavo)
|
||||
. Fixed bug #54055 (buffer overrun with high values for precision ini
|
||||
setting). (Gustavo)
|
||||
. Fixed bug #53959 (reflection data for fgetcsv out-of-date). (Richard)
|
||||
. Fixed bug #53577 (Regression introduced in 5.3.4 in open_basedir with a
|
||||
trailing forward slash). (lekensteyn at gmail dot com, Pierre)
|
||||
. Fixed bug #53682 (Fix compile on the VAX). (Rasmus, jklos)
|
||||
. Fixed bug #48484 (array_product() always returns 0 for an empty array).
|
||||
(Ilia)
|
||||
. Fixed bug #48607 (fwrite() doesn't check reply from ftp server before
|
||||
exiting). (Ilia)
|
||||
|
||||
|
||||
- Calendar extension:
|
||||
. Fixed bug #53574 (Integer overflow in SdnToJulian, sometimes leading to
|
||||
segfault). (Gustavo)
|
||||
|
||||
- DOM extension:
|
||||
. Implemented FR #39771 (Made DOMDocument::saveHTML accept an optional DOMNode
|
||||
like DOMDocument::saveXML). (Gustavo)
|
||||
|
||||
- DateTime extension:
|
||||
. Fixed a bug in DateTime->modify() where absolute date/time statements had
|
||||
no effect. (Derick)
|
||||
. Fixed bug #53729 (DatePeriod fails to initialize recurrences on 64bit
|
||||
big-endian systems). (Derick, rein@basefarm.no)
|
||||
. Fixed bug #52808 (Segfault when specifying interval as two dates). (Stas)
|
||||
. Fixed bug #52738 (Can't use new properties in class extended from
|
||||
DateInterval). (Stas)
|
||||
. Fixed bug #52290 (setDate, setISODate, setTime works wrong when DateTime
|
||||
created from timestamp). (Stas)
|
||||
. Fixed bug #52063 (DateTime constructor's second argument doesn't have a
|
||||
null default value). (Gustavo, Stas)
|
||||
|
||||
- Exif extension:
|
||||
. Fixed bug #54002 (crash on crafted tag, reported by Luca Carettoni).
|
||||
(Pierre) (CVE-2011-0708)
|
||||
|
||||
- Filter extension:
|
||||
. Fixed bug #53924 (FILTER_VALIDATE_URL doesn't validate port number).
|
||||
(Ilia, Gustavo)
|
||||
. Fixed bug #53150 (FILTER_FLAG_NO_RES_RANGE is missing some IP ranges).
|
||||
(Ilia)
|
||||
. Fixed bug #52209 (INPUT_ENV returns NULL for set variables (CLI)). (Ilia)
|
||||
. Fixed bug #47435 (FILTER_FLAG_NO_RES_RANGE don't work with ipv6).
|
||||
(Ilia, valli at icsurselva dot ch)
|
||||
|
||||
- Fileinfo extension:
|
||||
. Fixed bug #54016 (finfo_file() Cannot determine filetype in archives).
|
||||
(Hannes)
|
||||
|
||||
- Gettext
|
||||
. Fixed bug #53837 (_() crashes on Windows when no LANG or LANGUAGE
|
||||
environment variable are set). (Pierre)
|
||||
|
||||
- IMAP extension:
|
||||
. Implemented FR #53812 (get MIME headers of the part of the email). (Stas)
|
||||
. Fixed bug #53377 (imap_mime_header_decode() doesn't ignore \t during long
|
||||
MIME header unfolding). (Adam)
|
||||
|
||||
- Intl extension:
|
||||
. Fixed bug #53612 (Segmentation fault when using cloned several intl
|
||||
objects). (Gustavo)
|
||||
. Fixed bug #53512 (NumberFormatter::setSymbol crash on bogus $attr values).
|
||||
(Felipe)
|
||||
. Implemented clone functionality for number, date & message formatters.
|
||||
(Stas).
|
||||
|
||||
- JSON extension:
|
||||
. Fixed bug #53963 (Ensure error_code is always set during some failed
|
||||
decodings). (Scott)
|
||||
|
||||
- mysqlnd
|
||||
. Fixed problem with always returning 0 as num_rows for unbuffered sets.
|
||||
(Andrey, Ulf)
|
||||
|
||||
- MySQL Improved extension:
|
||||
. Added 'db' and 'catalog' keys to the field fetching functions (FR #39847).
|
||||
(Kalle)
|
||||
. Fixed buggy counting of affected rows when using the text protocol. The
|
||||
collected statistics were wrong when multi_query was used with mysqlnd
|
||||
(Andrey)
|
||||
. Fixed bug #53795 (Connect Error from MySqli (mysqlnd) when using SSL).
|
||||
(Kalle)
|
||||
. Fixed bug #53503 (mysqli::query returns false after successful LOAD DATA
|
||||
query). (Kalle, Andrey)
|
||||
. Fixed bug #53425 (mysqli_real_connect() ignores client flags when built to
|
||||
call libmysql). (Kalle, tre-php-net at crushedhat dot com)
|
||||
|
||||
- OpenSSL extension:
|
||||
. Fixed stream_socket_enable_crypto() not honoring the socket timeout in
|
||||
server mode. (Gustavo)
|
||||
. Fixed bug #54060 (Memory leaks when openssl_encrypt). (Pierre)
|
||||
. Fixed bug #54061 (Memory leaks when openssl_decrypt). (Pierre)
|
||||
. Fixed bug #53592 (stream_socket_enable_crypto() busy-waits in client mode).
|
||||
(Gustavo)
|
||||
. Implemented FR #53447 (Cannot disable SessionTicket extension for servers
|
||||
that do not support it) by adding a no_ticket SSL context option. (Adam,
|
||||
Tony)
|
||||
|
||||
- PDO MySQL driver:
|
||||
. Fixed bug #53551 (PDOStatement execute segfaults for pdo_mysql driver).
|
||||
(Johannes)
|
||||
. Implemented FR #47802 (Support for setting character sets in DSN strings).
|
||||
(Kalle)
|
||||
|
||||
- PDO Oracle driver:
|
||||
. Fixed bug #39199 (Cannot load Lob data with more than 4000 bytes on
|
||||
ORACLE 10). (spatar at mail dot nnov dot ru)
|
||||
|
||||
- PDO PostgreSQL driver:
|
||||
. Fixed bug #53517 (segfault in pgsql_stmt_execute() when postgres is down).
|
||||
(gyp at balabit dot hu)
|
||||
|
||||
- Phar extension:
|
||||
. Fixed bug #54247 (format-string vulnerability on Phar). (Felipe)
|
||||
(CVE-2011-1153)
|
||||
. Fixed bug #53541 (format string bug in ext/phar).
|
||||
(crrodriguez at opensuse dot org, Ilia)
|
||||
. Fixed bug #53898 (PHAR reports invalid error message, when the directory
|
||||
does not exist). (Ilia)
|
||||
|
||||
- PHP-FPM SAPI:
|
||||
. Enforce security in the fastcgi protocol parsing.
|
||||
(ef-lists at email dotde)
|
||||
. Fixed bug #53777 (php-fpm log format now match php_error log format). (fat)
|
||||
. Fixed bug #53527 (php-fpm --test doesn't set a valuable return value). (fat)
|
||||
. Fixed bug #53434 (php-fpm slowlog now also logs the original request). (fat)
|
||||
|
||||
- Readline extension:
|
||||
. Fixed bug #53630 (Fixed parameter handling inside readline() function).
|
||||
(jo at feuersee dot de, Ilia)
|
||||
|
||||
- Reflection extension:
|
||||
. Fixed bug #53915 (ReflectionClass::getConstant(s) emits fatal error on
|
||||
constants with self::). (Gustavo)
|
||||
|
||||
- Shmop extension:
|
||||
. Fixed bug #54193 (Integer overflow in shmop_read()). (Felipe)
|
||||
Reported by Jose Carlos Norte <jose at eyeos dot org> (CVE-2011-1092)
|
||||
|
||||
- SNMP extension:
|
||||
. Fixed bug #51336 (snmprealwalk (snmp v1) does not handle end of OID tree
|
||||
correctly). (Boris Lytochkin)
|
||||
|
||||
- SOAP extension:
|
||||
. Fixed possible crash introduced by the NULL poisoning patch.
|
||||
(Mateusz Kocielski, Pierre)
|
||||
|
||||
- SPL extension:
|
||||
. Fixed memory leak in DirectoryIterator::getExtension() and
|
||||
SplFileInfo::getExtension(). (Felipe)
|
||||
. Fixed bug #53914 (SPL assumes HAVE_GLOB is defined). (Chris Jones)
|
||||
. Fixed bug #53515 (property_exists incorrect on ArrayObject null and 0
|
||||
values). (Felipe)
|
||||
. Fixed bug #49608 (Using CachingIterator on DirectoryIterator instance
|
||||
segfaults). (Felipe)
|
||||
|
||||
. Added SplFileInfo::getExtension(). FR #48767. (Peter Cowburn)
|
||||
|
||||
- SQLite3 extension:
|
||||
. Fixed memory leaked introduced by the NULL poisoning patch.
|
||||
(Mateusz Kocielski, Pierre)
|
||||
. Fixed memory leak on SQLite3Result and SQLite3Stmt when assigning to a
|
||||
reference. (Felipe)
|
||||
. Add SQlite3_Stmt::readonly() for checking if a statement is read only.
|
||||
(Scott)
|
||||
. Implemented FR #53466 (SQLite3Result::columnType() should return false after
|
||||
all of the rows have been fetched). (Scott)
|
||||
|
||||
- Streams:
|
||||
. Fixed bug #54092 (Segmentation fault when using HTTP proxy with the FTP
|
||||
wrapper). (Gustavo)
|
||||
. Fixed bug #53913 (Streams functions assume HAVE_GLOB is defined). (Chris
|
||||
Jones)
|
||||
. Fixed bug #53903 (userspace stream stat callback does not separate the
|
||||
elements of the returned array before converting them). (Gustavo)
|
||||
. Implemented FR #26158 (open arbitrary file descriptor with fopen). (Gustavo)
|
||||
|
||||
- Tokenizer Extension
|
||||
. Fixed bug #54089 (token_get_all() does not stop after __halt_compiler).
|
||||
(Ilia)
|
||||
|
||||
- XSL extension:
|
||||
. Fixed memory leaked introduced by the NULL poisoning patch.
|
||||
(Mateusz Kocielski, Pierre)
|
||||
|
||||
- Zip extension:
|
||||
. Added the filename into the return value of stream_get_meta_data(). (Hannes)
|
||||
. Fixed bug #53923 (Zip functions assume HAVE_GLOB is defined). (Adam)
|
||||
. Fixed bug #53893 (Wrong return value for ZipArchive::extractTo()). (Pierre)
|
||||
. Fixed bug #53885 (ZipArchive segfault with FL_UNCHANGED on empty archive).
|
||||
(Stas, Maksymilian Arciemowicz). (CVE-2011-0421)
|
||||
. Fixed bug #53854 (Missing constants for compression type). (Richard, Adam)
|
||||
. Fixed bug #53603 (ZipArchive should quiet stat errors). (brad dot froehle at
|
||||
gmail dot com, Gustavo)
|
||||
. Fixed bug #53579 (stream_get_contents() segfaults on ziparchive streams).
|
||||
(Hannes)
|
||||
. Fixed bug #53568 (swapped memset arguments in struct initialization).
|
||||
(crrodriguez at opensuse dot org)
|
||||
. Fixed bug #53166 (Missing parameters in docs and reflection definition).
|
||||
(Richard)
|
||||
. Fixed bug #49072 (feof never returns true for damaged file in zip).
|
||||
(Gustavo, Richard Quadling)
|
||||
|
||||
06 Jan 2011, PHP 5.3.5
|
||||
- Fixed Bug #53632 (infinite loop with x87 fpu). (CVE-2010-4645) (Scott,
|
||||
Rasmus)
|
||||
|
||||
09 Dec 2010, PHP 5.3.4
|
||||
- Upgraded bundled Sqlite3 to version 3.7.3. (Ilia)
|
||||
- Upgraded bundled PCRE to version 8.10. (Ilia)
|
||||
@@ -7,7 +508,8 @@
|
||||
- Security enhancements:
|
||||
. Fixed crash in zip extract method (possible CWE-170).
|
||||
(Maksymilian Arciemowicz, Pierre)
|
||||
. Paths with NULL in them (foo\0bar.txt) are now considered as invalid. (Rasmus)
|
||||
. Paths with NULL in them (foo\0bar.txt) are now considered as invalid.
|
||||
(Rasmus)
|
||||
. Fixed a possible double free in imap extension (Identified by Mateusz
|
||||
Kocielski). (CVE-2010-4150). (Ilia)
|
||||
. Fixed NULL pointer dereference in ZipArchive::getArchiveComment.
|
||||
@@ -34,8 +536,8 @@
|
||||
. Implemented symbolic links support for open_basedir checks. (Pierre)
|
||||
. Implemented FR #51804, SplFileInfo::getLinkTarget on Windows. (Pierre)
|
||||
. Implemented FR #50692, not uploaded files don't count towards
|
||||
max_file_uploads limit. As a side improvement, temporary files are not opened
|
||||
for empty uploads and, in debug mode, 0-length uploads. (Gustavo)
|
||||
max_file_uploads limit. As a side improvement, temporary files are not
|
||||
opened for empty uploads and, in debug mode, 0-length uploads. (Gustavo)
|
||||
|
||||
- Improved MySQLnd:
|
||||
. Added new character sets to mysqlnd, which are available in MySQL 5.5
|
||||
@@ -72,12 +574,12 @@
|
||||
. Fixed bug #53141 (autoload misbehaves if called from closing session).
|
||||
(ladislav at marek dot su)
|
||||
. Fixed bug #53021 (In html_entity_decode, failure to convert numeric entities
|
||||
with ENT_NOQUOTES and ISO-8859-1). Fixed and extended the fix of ENT_NOQUOTES
|
||||
in html_entity_decode that had introduced the bug (rev #185591) to other
|
||||
encodings. Additionaly, html_entity_decode() now doesn't decode " if
|
||||
ENT_NOQUOTES is given. (Gustavo)
|
||||
. Fixed bug #52931 (strripos not overloaded with function overloading enabled).
|
||||
(Felipe)
|
||||
with ENT_NOQUOTES and ISO-8859-1). Fixed and extended the fix of
|
||||
ENT_NOQUOTES in html_entity_decode that had introduced the bug (rev
|
||||
#185591) to other encodings. Additionaly, html_entity_decode() now doesn't
|
||||
decode " if ENT_NOQUOTES is given. (Gustavo)
|
||||
. Fixed bug #52931 (strripos not overloaded with function overloading
|
||||
enabled). (Felipe)
|
||||
. Fixed bug #52772 (var_dump() doesn't check for the existence of
|
||||
get_class_name before calling it). (Kalle, Gustavo)
|
||||
. Fixed bug #52534 (var_export array with negative key). (Felipe)
|
||||
@@ -91,7 +593,8 @@
|
||||
other platforms). (Pierre)
|
||||
. Fixed bug #49687 (utf8_decode vulnerabilities and deficiencies in the number
|
||||
of reported malformed sequences). (CVE-2010-3870) (Gustavo)
|
||||
. Fixed bug #49407 (get_html_translation_table doesn't handle UTF-8). (Gustavo)
|
||||
. Fixed bug #49407 (get_html_translation_table doesn't handle UTF-8).
|
||||
(Gustavo)
|
||||
. Fixed bug #48831 (php -i has different output to php --ini). (Richard,
|
||||
Pierre)
|
||||
. Fixed bug #47643 (array_diff() takes over 3000 times longer than php 5.2.4).
|
||||
@@ -192,8 +695,8 @@
|
||||
words). (Ilia)
|
||||
|
||||
- Intl extension:
|
||||
. Fixed crashes on invalid parameters in intl extension. (CVE-2010-4409). (Stas, Maksymilian
|
||||
Arciemowicz)
|
||||
. Fixed crashes on invalid parameters in intl extension. (CVE-2010-4409).
|
||||
(Stas, Maksymilian Arciemowicz)
|
||||
. Added support for formatting the timestamp stored in a DateTime object.
|
||||
(Stas)
|
||||
. Fixed bug #50590 (IntlDateFormatter::parse result is limited to the integer
|
||||
@@ -203,8 +706,8 @@
|
||||
. Fixed bug #53273 (mb_strcut() returns garbage with the excessive length
|
||||
parameter). (CVE-2010-4156) (Mateusz Kocielski, Pierre, Moriyoshi)
|
||||
. Fixed bug #52981 (Unicode casing table was out-of-date. Updated with
|
||||
UnicodeData-6.0.0d7.txt and included the source of the generator program with
|
||||
the distribution) (Gustavo).
|
||||
UnicodeData-6.0.0d7.txt and included the source of the generator program
|
||||
with the distribution) (Gustavo).
|
||||
. Fixed bug #52681 (mb_send_mail() appends an extra MIME-Version header).
|
||||
(Adam)
|
||||
|
||||
@@ -275,8 +778,8 @@
|
||||
. Fixed bug #52725 (gcc builtin atomic functions were sometimes used when they
|
||||
were not available). (fat)
|
||||
. Fixed bug #52693 (configuration file errors are not logged to stderr). (fat)
|
||||
. Fixed bug #52674 (FPM Status page returns inconsistent Content-Type headers).
|
||||
(fat)
|
||||
. Fixed bug #52674 (FPM Status page returns inconsistent Content-Type
|
||||
headers). (fat)
|
||||
. Fixed bug #52498 (libevent was not only linked to php-fpm). (fat)
|
||||
|
||||
- PDO:
|
||||
@@ -334,9 +837,9 @@
|
||||
- Streams:
|
||||
. Fixed forward stream seeking emulation in streams that don't support seeking
|
||||
in situations where the read operation gives back less data than requested
|
||||
and when there was data in the buffer before the emulation started. Also made
|
||||
more consistent its behavior -- should return failure every time less data
|
||||
than was requested was skipped. (Gustavo)
|
||||
and when there was data in the buffer before the emulation started. Also
|
||||
made more consistent its behavior -- should return failure every time less
|
||||
data than was requested was skipped. (Gustavo)
|
||||
. Fixed bug #53241 (stream casting that relies on fdopen/fopencookie fails
|
||||
with streams opened with, inter alia, the 'xb' mode). (Gustavo)
|
||||
. Fixed bug #53006 (stream_get_contents has an unpredictable behavior when the
|
||||
|
||||
+10
-14
@@ -100,16 +100,14 @@ Derick) run the following commands for you:
|
||||
|
||||
``sudo -u ezmlm ezmlm-sub ~ezmlm/primary-qa-tester/mod moderator-email-address``
|
||||
|
||||
3. Update the MD5 sums in ``web/qa/trunk/include/rc-md5sums.txt`` (no empty lines).
|
||||
3. Update ``web/qa/trunk/include/release-qa.php`` with the appropriate information.
|
||||
See the documentation within release-qa.php for more information, but all releases
|
||||
and RCs are configured here. Only $QA_RELEASES needs to be edited.
|
||||
|
||||
4. Update in ``web/qa/trunk/include/release-qa.php`` constants with the new RC and
|
||||
commit this.
|
||||
Example: When rolling an RC, set the 'rc' with appropriate information for the
|
||||
given version.
|
||||
|
||||
a. ``$BUILD_TEST_RELEASES`` = array("4.4.7RC1", "5.2.2RC1")
|
||||
|
||||
b. ``$CURRENT_QA_RELEASE_4`` = "4.4.7RC1" (``$CURRENT_QA_RELEASE_5`` for PHP5)
|
||||
|
||||
c. ``$RELEASE_PROCESS`` = array(4 => true, 5 => true)
|
||||
Note: Remember to update the MD5 checksum information.
|
||||
|
||||
1. Update in ``php-bugs/trunk/include/functions.inc`` the ``show_version_option``
|
||||
function to include the new RC and commit.
|
||||
@@ -244,13 +242,11 @@ number, and remove the RC from there.
|
||||
|
||||
11. Update ``qaweb/include/release-qa.php``
|
||||
|
||||
a. Update the $BUILD_TEST_RELEASES array with the release name
|
||||
- Update $QA_RELEASES with the appropriate information, which means bumping
|
||||
the version number to an upcoming version.
|
||||
|
||||
b. Update $RELEASE_PROCESS array (set to false)
|
||||
|
||||
I. For PHP4: Set $CURRENT_QA_RELEASE_4 to false
|
||||
|
||||
II. For PHP5: Set $CURRENT_QA_RELEASE_5 to false
|
||||
Example: If PHP 5.3.7 is being released, then PHP 5.3.8 is the next QA version,
|
||||
so replace 5.3.7 with 5.3.8 within $QA_RELEASES.
|
||||
|
||||
Re-releasing the same version (or -pl)
|
||||
--------------------------------------
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Thread Safe Resource Manager |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1999-2010, Andi Gutmans, Sascha Schumann, Zeev Suraski |
|
||||
| Copyright (c) 1999-2011, Andi Gutmans, Sascha Schumann, Zeev Suraski |
|
||||
| This source file is subject to the TSRM license, that is bundled |
|
||||
| with this package in the file LICENSE |
|
||||
+----------------------------------------------------------------------+
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Thread Safe Resource Manager |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1999-2010, Andi Gutmans, Sascha Schumann, Zeev Suraski |
|
||||
| Copyright (c) 1999-2011, Andi Gutmans, Sascha Schumann, Zeev Suraski |
|
||||
| This source file is subject to the TSRM license, that is bundled |
|
||||
| with this package in the file LICENSE |
|
||||
+----------------------------------------------------------------------+
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2011 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2011 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+48
-6
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2011 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -509,6 +509,9 @@ CWD_API char *virtual_getcwd_ex(size_t *length TSRMLS_DC) /* {{{ */
|
||||
|
||||
*length = 1;
|
||||
retval = (char *) malloc(2);
|
||||
if (retval == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
retval[0] = DEFAULT_SLASH;
|
||||
retval[1] = '\0';
|
||||
return retval;
|
||||
@@ -521,6 +524,9 @@ CWD_API char *virtual_getcwd_ex(size_t *length TSRMLS_DC) /* {{{ */
|
||||
|
||||
*length = state->cwd_length+1;
|
||||
retval = (char *) malloc(*length+1);
|
||||
if (retval == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
memcpy(retval, state->cwd, *length);
|
||||
retval[0] = toupper(retval[0]);
|
||||
retval[*length-1] = DEFAULT_SLASH;
|
||||
@@ -623,7 +629,14 @@ CWD_API void realpath_cache_del(const char *path, int path_len TSRMLS_DC) /* {{{
|
||||
memcmp(path, (*bucket)->path, path_len) == 0) {
|
||||
realpath_cache_bucket *r = *bucket;
|
||||
*bucket = (*bucket)->next;
|
||||
CWDG(realpath_cache_size) -= sizeof(realpath_cache_bucket) + r->path_len + 1 + r->realpath_len + 1;
|
||||
|
||||
/* if the pointers match then only subtract the length of the path */
|
||||
if(r->path == r->realpath) {
|
||||
CWDG(realpath_cache_size) -= sizeof(realpath_cache_bucket) + r->path_len + 1;
|
||||
} else {
|
||||
CWDG(realpath_cache_size) -= sizeof(realpath_cache_bucket) + r->path_len + 1 + r->realpath_len + 1;
|
||||
}
|
||||
|
||||
free(r);
|
||||
return;
|
||||
} else {
|
||||
@@ -648,6 +661,10 @@ static inline void realpath_cache_add(const char *path, int path_len, const char
|
||||
realpath_cache_bucket *bucket = malloc(size);
|
||||
unsigned long n;
|
||||
|
||||
if (bucket == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef PHP_WIN32
|
||||
bucket->key = realpath_cache_key(path, path_len TSRMLS_CC);
|
||||
#else
|
||||
@@ -694,7 +711,14 @@ static inline realpath_cache_bucket* realpath_cache_find(const char *path, int p
|
||||
if (CWDG(realpath_cache_ttl) && (*bucket)->expires < t) {
|
||||
realpath_cache_bucket *r = *bucket;
|
||||
*bucket = (*bucket)->next;
|
||||
CWDG(realpath_cache_size) -= sizeof(realpath_cache_bucket) + r->path_len + 1 + r->realpath_len + 1;
|
||||
|
||||
/* if the pointers match then only subtract the length of the path */
|
||||
if(r->path == r->realpath) {
|
||||
CWDG(realpath_cache_size) -= sizeof(realpath_cache_bucket) + r->path_len + 1;
|
||||
} else {
|
||||
CWDG(realpath_cache_size) -= sizeof(realpath_cache_bucket) + r->path_len + 1 + r->realpath_len + 1;
|
||||
}
|
||||
|
||||
free(r);
|
||||
} else if (key == (*bucket)->key && path_len == (*bucket)->path_len &&
|
||||
memcmp(path, (*bucket)->path, path_len) == 0) {
|
||||
@@ -866,6 +890,9 @@ static int tsrm_realpath_r(char *path, int start, int len, int *ll, time_t *t, i
|
||||
}
|
||||
|
||||
pbuffer = (REPARSE_DATA_BUFFER *)tsrm_do_alloca(MAXIMUM_REPARSE_DATA_BUFFER_SIZE, use_heap_large);
|
||||
if (pbuffer == NULL) {
|
||||
return -1;
|
||||
}
|
||||
if(!DeviceIoControl(hLink, FSCTL_GET_REPARSE_POINT, NULL, 0, pbuffer, MAXIMUM_REPARSE_DATA_BUFFER_SIZE, &retlength, NULL)) {
|
||||
tsrm_free_alloca(pbuffer, use_heap_large);
|
||||
CloseHandle(hLink);
|
||||
@@ -952,9 +979,9 @@ static int tsrm_realpath_r(char *path, int start, int len, int *ll, time_t *t, i
|
||||
}
|
||||
|
||||
if (!isVolume) {
|
||||
char * tmp = substitutename + substitutename_off;
|
||||
char * tmp2 = substitutename + substitutename_off;
|
||||
for(bufindex = 0; bufindex < (substitutename_len - substitutename_off); bufindex++) {
|
||||
*(path + bufindex) = *(tmp + bufindex);
|
||||
*(path + bufindex) = *(tmp2 + bufindex);
|
||||
}
|
||||
|
||||
*(path + bufindex) = 0;
|
||||
@@ -1066,6 +1093,7 @@ static int tsrm_realpath_r(char *path, int start, int len, int *ll, time_t *t, i
|
||||
}
|
||||
if (is_dir && !directory) {
|
||||
/* not a directory */
|
||||
tsrm_free_alloca(tmp, use_heap);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@@ -1370,6 +1398,10 @@ CWD_API char *virtual_realpath(const char *path, char *real_path TSRMLS_DC) /* {
|
||||
/* realpath("") returns CWD */
|
||||
if (!*path) {
|
||||
new_state.cwd = (char*)malloc(1);
|
||||
if (new_state.cwd == NULL) {
|
||||
retval = NULL;
|
||||
goto end;
|
||||
}
|
||||
new_state.cwd[0] = '\0';
|
||||
new_state.cwd_length = 0;
|
||||
if (VCWD_GETCWD(cwd, MAXPATHLEN)) {
|
||||
@@ -1379,6 +1411,10 @@ CWD_API char *virtual_realpath(const char *path, char *real_path TSRMLS_DC) /* {
|
||||
CWD_STATE_COPY(&new_state, &CWDG(cwd));
|
||||
} else {
|
||||
new_state.cwd = (char*)malloc(1);
|
||||
if (new_state.cwd == NULL) {
|
||||
retval = NULL;
|
||||
goto end;
|
||||
}
|
||||
new_state.cwd[0] = '\0';
|
||||
new_state.cwd_length = 0;
|
||||
}
|
||||
@@ -1394,7 +1430,7 @@ CWD_API char *virtual_realpath(const char *path, char *real_path TSRMLS_DC) /* {
|
||||
}
|
||||
|
||||
CWD_STATE_FREE(&new_state);
|
||||
|
||||
end:
|
||||
return retval;
|
||||
}
|
||||
/* }}} */
|
||||
@@ -1887,6 +1923,9 @@ CWD_API char *tsrm_realpath(const char *path, char *real_path TSRMLS_DC) /* {{{
|
||||
/* realpath("") returns CWD */
|
||||
if (!*path) {
|
||||
new_state.cwd = (char*)malloc(1);
|
||||
if (new_state.cwd == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
new_state.cwd[0] = '\0';
|
||||
new_state.cwd_length = 0;
|
||||
if (VCWD_GETCWD(cwd, MAXPATHLEN)) {
|
||||
@@ -1898,6 +1937,9 @@ CWD_API char *tsrm_realpath(const char *path, char *real_path TSRMLS_DC) /* {{{
|
||||
new_state.cwd_length = strlen(cwd);
|
||||
} else {
|
||||
new_state.cwd = (char*)malloc(1);
|
||||
if (new_state.cwd == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
new_state.cwd[0] = '\0';
|
||||
new_state.cwd_length = 0;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2011 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2011 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2011 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -670,7 +670,9 @@ UPGRADE NOTES - PHP 5.3
|
||||
ReflectionClass::inNamespace()
|
||||
ReflectionClass::getNamespaceName()
|
||||
ReflectionClass::getShortName()
|
||||
- SPL SplObjectStorage::addAll()
|
||||
- SPL: DirectoryIterator::getExtension()
|
||||
SplFileInfo::getExtension()
|
||||
SplObjectStorage::addAll()
|
||||
SplObjectStorage::removeAll()
|
||||
- XSL: XSLTProcessor::setProfiling()
|
||||
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ dnl This file contains local autoconf functions.
|
||||
|
||||
AC_DEFUN([LIBZEND_BISON_CHECK],[
|
||||
# we only support certain bison versions
|
||||
bison_version_list="1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3"
|
||||
bison_version_list="1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.5"
|
||||
|
||||
# for standalone build of Zend Engine
|
||||
test -z "$SED" && SED=sed
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
--TEST--
|
||||
Bug #53629 (memory leak inside highlight_string())
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$str = '
|
||||
<?php
|
||||
class foo {
|
||||
public $bar = <<<EOT
|
||||
bar
|
||||
EOT;
|
||||
}
|
||||
?>
|
||||
';
|
||||
$str2 = '
|
||||
<?php
|
||||
var_dump(array(<<<EOD
|
||||
foobar!
|
||||
EOD
|
||||
));
|
||||
?>
|
||||
';
|
||||
|
||||
highlight_string($str, true);
|
||||
highlight_string($str2, true);
|
||||
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
Done
|
||||
@@ -0,0 +1,10 @@
|
||||
--TEST--
|
||||
zend_strtod() hangs with 2.2250738585072011e-308
|
||||
--FILE--
|
||||
<?php
|
||||
$d = 2.2250738585072011e-308;
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Done
|
||||
@@ -0,0 +1,22 @@
|
||||
--TEST--
|
||||
Bug #53727 (Inconsistent behavior of is_subclass_of with interfaces)
|
||||
--FILE--
|
||||
<?php
|
||||
interface MyInterface {
|
||||
const TEST_CONSTANT = true;
|
||||
}
|
||||
|
||||
class ParentClass implements MyInterface { }
|
||||
|
||||
class ChildClass extends ParentClass { }
|
||||
|
||||
echo (is_subclass_of('ChildClass', 'MyInterface') ? 'true' : 'false') . "\n";
|
||||
echo (defined('ChildClass::TEST_CONSTANT') ? 'true' : 'false') . "\n";
|
||||
|
||||
echo (is_subclass_of('ParentClass', 'MyInterface') ? 'true' : 'false') . "\n";
|
||||
echo (defined('ParentClass::TEST_CONSTANT') ? 'true' : 'false') . "\n";
|
||||
--EXPECT--
|
||||
true
|
||||
true
|
||||
true
|
||||
true
|
||||
@@ -0,0 +1,61 @@
|
||||
--TEST--
|
||||
Bug #53958 (Closures can't 'use' shared variables by value and by reference)
|
||||
--FILE--
|
||||
<?php
|
||||
// TEST 1
|
||||
$a = 1;
|
||||
$fn1 = function() use ($a) {echo "$a\n"; $a++;};
|
||||
$fn2 = function() use ($a) {echo "$a\n"; $a++;};
|
||||
$a = 5;
|
||||
$fn1(); // 1
|
||||
$fn2(); // 1
|
||||
$fn1(); // 1
|
||||
$fn2(); // 1
|
||||
|
||||
// TEST 2
|
||||
$b = 1;
|
||||
$fn1 = function() use (&$b) {echo "$b\n"; $b++;};
|
||||
$fn2 = function() use (&$b) {echo "$b\n"; $b++;};
|
||||
$b = 5;
|
||||
$fn1(); // 5
|
||||
$fn2(); // 6
|
||||
$fn1(); // 7
|
||||
$fn2(); // 8
|
||||
|
||||
// TEST 3
|
||||
$c = 1;
|
||||
$fn1 = function() use (&$c) {echo "$c\n"; $c++;};
|
||||
$fn2 = function() use ($c) {echo "$c\n"; $c++;};
|
||||
$c = 5;
|
||||
$fn1(); // 5
|
||||
$fn2(); // 1
|
||||
$fn1(); // 6
|
||||
$fn2(); // 1
|
||||
|
||||
// TEST 4
|
||||
$d = 1;
|
||||
$fn1 = function() use ($d) {echo "$d\n"; $d++;};
|
||||
$fn2 = function() use (&$d) {echo "$d\n"; $d++;};
|
||||
$d = 5;
|
||||
$fn1(); // 1
|
||||
$fn2(); // 5
|
||||
$fn1(); // 1
|
||||
$fn2(); // 6
|
||||
?>
|
||||
--EXPECT--
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
5
|
||||
1
|
||||
6
|
||||
1
|
||||
1
|
||||
5
|
||||
1
|
||||
6
|
||||
@@ -0,0 +1,11 @@
|
||||
--TEST--
|
||||
Bug #53971 (isset() and empty() produce apparently spurious runtime error)
|
||||
--FILE--
|
||||
<?php
|
||||
$s = "";
|
||||
var_dump(isset($s[0][0]));
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(false)
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
--TEST--
|
||||
Bug #54013 (ReflectionParam for duplicate parameter contains garbage)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class a
|
||||
{
|
||||
function b($aaaaaaaa, $aaaaaaaa)
|
||||
{
|
||||
$params = func_get_args();
|
||||
}
|
||||
}
|
||||
|
||||
$c = new a;
|
||||
$c->b('waa?', 'meukee!');
|
||||
|
||||
$reflectionClass = new ReflectionClass($c);
|
||||
$params = $reflectionClass->getMethod('b')->getParameters();
|
||||
|
||||
var_dump($params[0], $params[1]);
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
object(ReflectionParameter)#%d (1) {
|
||||
["name"]=>
|
||||
string(8) "aaaaaaaa"
|
||||
}
|
||||
object(ReflectionParameter)#%d (1) {
|
||||
["name"]=>
|
||||
string(8) "aaaaaaaa"
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
--TEST--
|
||||
Bug #54039 (use() of static variables in lambda functions can break staticness)
|
||||
--FILE--
|
||||
<?php
|
||||
function test_1() {
|
||||
static $v = 0;
|
||||
++$v;
|
||||
echo "Outer function increments \$v to $v\n";
|
||||
$f = function() use($v) {
|
||||
echo "Inner function reckons \$v is $v\n";
|
||||
};
|
||||
return $f;
|
||||
}
|
||||
|
||||
$f = test_1(); $f();
|
||||
$f = test_1(); $f();
|
||||
|
||||
function test_2() {
|
||||
static $v = 0;
|
||||
$f = function() use($v) {
|
||||
echo "Inner function reckons \$v is $v\n";
|
||||
};
|
||||
++$v;
|
||||
echo "Outer function increments \$v to $v\n";
|
||||
return $f;
|
||||
}
|
||||
|
||||
$f = test_2(); $f();
|
||||
$f = test_2(); $f();
|
||||
|
||||
function test_3() {
|
||||
static $v = "";
|
||||
$v .= 'b';
|
||||
echo "Outer function catenates 'b' onto \$v to give $v\n";
|
||||
$f = function() use($v) {
|
||||
echo "Inner function reckons \$v is $v\n";
|
||||
};
|
||||
$v .= 'a';
|
||||
echo "Outer function catenates 'a' onto \$v to give $v\n";
|
||||
return $f;
|
||||
}
|
||||
$f = test_3(); $f();
|
||||
$f = test_3(); $f();
|
||||
--EXPECT--
|
||||
Outer function increments $v to 1
|
||||
Inner function reckons $v is 1
|
||||
Outer function increments $v to 2
|
||||
Inner function reckons $v is 2
|
||||
Outer function increments $v to 1
|
||||
Inner function reckons $v is 0
|
||||
Outer function increments $v to 2
|
||||
Inner function reckons $v is 1
|
||||
Outer function catenates 'b' onto $v to give b
|
||||
Outer function catenates 'a' onto $v to give ba
|
||||
Inner function reckons $v is b
|
||||
Outer function catenates 'b' onto $v to give bab
|
||||
Outer function catenates 'a' onto $v to give baba
|
||||
Inner function reckons $v is bab
|
||||
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Bug #54262 (Crash when assigning value to a dimension in a non-array)
|
||||
--FILE--
|
||||
<?php
|
||||
$a = '0';
|
||||
var_dump(isset($a['b']));
|
||||
$simpleString = preg_match('//', '', $a->a);
|
||||
$simpleString["wrong"] = "f";
|
||||
echo "ok\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
bool(true)
|
||||
|
||||
Warning: Attempt to modify property of non-object in %s/Zend/tests/bug54262.php on line 4
|
||||
|
||||
Warning: Cannot use a scalar value as an array in %s/Zend/tests/bug54262.php on line 5
|
||||
ok
|
||||
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Bug #54265 (crash when variable gets reassigned in error handler)
|
||||
--FILE--
|
||||
<?php
|
||||
function my_errorhandler($errno,$errormsg) {
|
||||
global $my_var;
|
||||
$my_var = 0;
|
||||
echo "EROOR: $errormsg\n";
|
||||
}
|
||||
set_error_handler("my_errorhandler");
|
||||
$my_var = str_repeat("A",$my_var[0]->errormsg = "xyz");
|
||||
echo "ok\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
EROOR: Creating default object from empty value
|
||||
ok
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
--TEST--
|
||||
Bug #54268 (Double free when destroy_zend_class fails)
|
||||
--INI--
|
||||
memory_limit=8M
|
||||
--SKIPIF--
|
||||
<?php
|
||||
$zend_mm_enabled = getenv("USE_ZEND_ALLOC");
|
||||
if ($zend_mm_enabled === "0") {
|
||||
die("skip Zend MM disabled");
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
class DestructableObject
|
||||
{
|
||||
public function __destruct()
|
||||
{
|
||||
DestructableObject::__destruct();
|
||||
}
|
||||
}
|
||||
class DestructorCreator
|
||||
{
|
||||
public function __destruct()
|
||||
{
|
||||
$this->test = new DestructableObject;
|
||||
}
|
||||
}
|
||||
class Test
|
||||
{
|
||||
public static $mystatic;
|
||||
}
|
||||
$x = new Test();
|
||||
Test::$mystatic = new DestructorCreator();
|
||||
--EXPECTF--
|
||||
Fatal error: Allowed memory size of %s bytes exhausted%s(tried to allocate %s bytes) in %s on line %d
|
||||
@@ -0,0 +1,22 @@
|
||||
--TEST--
|
||||
Bug #54305 (Crash in gc_remove_zval_from_buffer)
|
||||
--FILE--
|
||||
<?php
|
||||
class TestClass {
|
||||
public function methodWithArgs($a, $b) {
|
||||
}
|
||||
}
|
||||
abstract class AbstractClass {
|
||||
}
|
||||
$methodWithArgs = new ReflectionMethod('TestClass', 'methodWithArgs');
|
||||
echo $methodWithArgs++;
|
||||
?>
|
||||
--EXPECTF--
|
||||
Method [ <user> public method methodWithArgs ] {
|
||||
@@ %sbug54305.php %d - %d
|
||||
|
||||
- Parameters [2] {
|
||||
Parameter #0 [ <required> $a ]
|
||||
Parameter #1 [ <required> $b ]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
--TEST--
|
||||
Bug #54358 (Closure, use and reference)
|
||||
--FILE--
|
||||
<?php
|
||||
class asserter {
|
||||
public function call($function) {
|
||||
}
|
||||
}
|
||||
|
||||
$asserter = new asserter();
|
||||
|
||||
$closure = function() use ($asserter, &$function) {
|
||||
$asserter->call($function = 'md5');
|
||||
};
|
||||
|
||||
$closure();
|
||||
|
||||
var_dump($function);
|
||||
|
||||
$closure = function() use ($asserter, $function) {
|
||||
$asserter->call($function);
|
||||
};
|
||||
|
||||
$closure();
|
||||
|
||||
var_dump($function);
|
||||
|
||||
$closure = function() use ($asserter, $function) {
|
||||
$asserter->call($function);
|
||||
};
|
||||
|
||||
$closure();
|
||||
|
||||
var_dump($function);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(3) "md5"
|
||||
string(3) "md5"
|
||||
string(3) "md5"
|
||||
@@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
Bug #54367 (Use of closure causes problem in ArrayAccess)
|
||||
--FILE--
|
||||
<?php
|
||||
class MyObjet implements ArrayAccess
|
||||
{
|
||||
public function offsetSet($offset, $value) { }
|
||||
public function offsetExists($offset) { }
|
||||
public function offsetUnset($offset) { }
|
||||
|
||||
public function offsetGet ($offset)
|
||||
{
|
||||
return function ($var) use ($offset) { // here is the problem
|
||||
var_dump($offset, $var);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
$a = new MyObjet();
|
||||
echo $a['p']('foo');
|
||||
?>
|
||||
--EXPECT--
|
||||
string(1) "p"
|
||||
string(3) "foo"
|
||||
@@ -0,0 +1,23 @@
|
||||
--TEST--
|
||||
Bug #54372 (Crash accessing global object itself returned from its __get() handle)
|
||||
--FILE--
|
||||
<?php
|
||||
class test_class
|
||||
{
|
||||
public function __get($name)
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function b()
|
||||
{
|
||||
echo "ok\n";
|
||||
}
|
||||
}
|
||||
|
||||
global $test3;
|
||||
$test3 = new test_class();
|
||||
$test3->a->b();
|
||||
?>
|
||||
--EXPECT--
|
||||
ok
|
||||
@@ -0,0 +1,15 @@
|
||||
--TEST--
|
||||
Bug #54585 (track_errors causes segfault)
|
||||
--INI--
|
||||
track_errors=On
|
||||
--FILE--
|
||||
<?php
|
||||
function testing($source) {
|
||||
unset($source[$cos]);
|
||||
}
|
||||
testing($_GET);
|
||||
echo "ok\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Notice: Undefined variable: cos in %sbug54585.php on line 3
|
||||
ok
|
||||
@@ -0,0 +1,26 @@
|
||||
--TEST--
|
||||
Bug #54624 (class_alias and type hint)
|
||||
--FILE--
|
||||
<?php
|
||||
class A
|
||||
{
|
||||
function foo(A $param) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class_alias('A', 'AliasA');
|
||||
|
||||
eval('
|
||||
class B extends A
|
||||
{
|
||||
function foo(AliasA $param) {
|
||||
}
|
||||
|
||||
}
|
||||
');
|
||||
|
||||
echo "DONE\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
DONE
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
namespace b\c {}
|
||||
namespace b\d {}
|
||||
@@ -0,0 +1,11 @@
|
||||
--TEST--
|
||||
Bug #54804 (__halt_compiler and imported namespaces)
|
||||
--FILE--
|
||||
<?php
|
||||
namespace a;
|
||||
require __DIR__ . '/bug54804.inc';
|
||||
echo 'DONE';
|
||||
__halt_compiler();
|
||||
?>
|
||||
--EXPECT--
|
||||
DONE
|
||||
@@ -0,0 +1,28 @@
|
||||
--TEST--
|
||||
Bug #54910 (Crash when calling call_user_func with unknown function name)
|
||||
--FILE--
|
||||
<?php
|
||||
class A {
|
||||
public function __call($method, $args) {
|
||||
if (stripos($method, 'get') === 0) {
|
||||
return $this->get();
|
||||
}
|
||||
die("No such method - '$method'\n");
|
||||
}
|
||||
|
||||
protected function get() {
|
||||
$class = get_class($this);
|
||||
$call = array($class, 'noSuchMethod');
|
||||
|
||||
if (is_callable($call)) {
|
||||
call_user_func($call);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class B extends A {}
|
||||
|
||||
$input = new B();
|
||||
echo $input->getEmail();
|
||||
--EXPECT--
|
||||
No such method - 'noSuchMethod'
|
||||
@@ -0,0 +1,23 @@
|
||||
--TEST--
|
||||
Bug #55007 (compiler fail after previous fail)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
function __autoload($classname) {
|
||||
if ('CompileErrorClass'==$classname) eval('class CompileErrorClass { function foo() { $a[] } }');
|
||||
if ('MyErrorHandler'==$classname) eval('class MyErrorHandler { function __construct() { print "My error handler runs.\n"; } }');
|
||||
}
|
||||
|
||||
function shutdown() {
|
||||
new MyErrorHandler();
|
||||
}
|
||||
|
||||
|
||||
register_shutdown_function('shutdown');
|
||||
|
||||
new CompileErrorClass();
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Fatal error: Cannot use [] for reading in %s(%d) : eval()'d code on line %d
|
||||
My error handler runs.
|
||||
@@ -0,0 +1,30 @@
|
||||
--TEST--
|
||||
Bug #55156 (ReflectionClass::getDocComment() returns comment even though the class has none)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
/** test */
|
||||
namespace foo {
|
||||
function test() { }
|
||||
|
||||
$x = new \ReflectionFunction('foo\test');
|
||||
var_dump($x->getDocComment());
|
||||
|
||||
/** test1 */
|
||||
class bar { }
|
||||
|
||||
/** test2 */
|
||||
class foo extends namespace\bar { }
|
||||
|
||||
$x = new \ReflectionClass('foo\bar');
|
||||
var_dump($x->getDocComment());
|
||||
|
||||
$x = new \ReflectionClass('foo\foo');
|
||||
var_dump($x->getDocComment());
|
||||
}
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
bool(false)
|
||||
string(12) "/** test1 */"
|
||||
string(12) "/** test2 */"
|
||||
@@ -1,5 +1,5 @@
|
||||
--TEST--
|
||||
concat difffent types
|
||||
concat different types
|
||||
--INI--
|
||||
precision=14
|
||||
--FILE--
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
--TEST--
|
||||
Persistent case insensetive and user defined constants
|
||||
Persistent case insensitive and user defined constants
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(ZEND_THREAD_safe);
|
||||
|
||||
Executable
+397
@@ -0,0 +1,397 @@
|
||||
--TEST--
|
||||
debug_backtrace options
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
function backtrace_print($opt = null)
|
||||
{
|
||||
if(is_null($opt)) {
|
||||
print_r(debug_backtrace());
|
||||
} else {
|
||||
print_r(debug_backtrace($opt));
|
||||
}
|
||||
}
|
||||
|
||||
function doit($a, $b, $how)
|
||||
{
|
||||
echo "==default\n";
|
||||
$how();
|
||||
echo "==true\n";
|
||||
$how(true);
|
||||
echo "==false\n";
|
||||
$how(false);
|
||||
echo "==DEBUG_BACKTRACE_PROVIDE_OBJECT\n";
|
||||
$how(DEBUG_BACKTRACE_PROVIDE_OBJECT);
|
||||
echo "==DEBUG_BACKTRACE_IGNORE_ARGS\n";
|
||||
$how(DEBUG_BACKTRACE_IGNORE_ARGS);
|
||||
echo "==both\n";
|
||||
$how(DEBUG_BACKTRACE_PROVIDE_OBJECT|DEBUG_BACKTRACE_IGNORE_ARGS);
|
||||
}
|
||||
|
||||
class foo {
|
||||
protected function doCall($dowhat, $how)
|
||||
{
|
||||
$dowhat('a','b', $how);
|
||||
}
|
||||
static function statCall($dowhat, $how)
|
||||
{
|
||||
$obj = new self();
|
||||
$obj->doCall($dowhat, $how);
|
||||
}
|
||||
}
|
||||
foo::statCall("doit", "debug_print_backtrace");
|
||||
foo::statCall("doit", "backtrace_print");
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
==default
|
||||
#0 doit(a, b, debug_print_backtrace) called at [%sdebug_backtrace_options.php:%d]
|
||||
#1 foo->doCall(doit, debug_print_backtrace) called at [%sdebug_backtrace_options.php:%d]
|
||||
#2 foo::statCall(doit, debug_print_backtrace) called at [%sdebug_backtrace_options.php:%d]
|
||||
==true
|
||||
#0 doit(a, b, debug_print_backtrace) called at [%sdebug_backtrace_options.php:%d]
|
||||
#1 foo->doCall(doit, debug_print_backtrace) called at [%sdebug_backtrace_options.php:%d]
|
||||
#2 foo::statCall(doit, debug_print_backtrace) called at [%sdebug_backtrace_options.php:%d]
|
||||
==false
|
||||
#0 doit(a, b, debug_print_backtrace) called at [%sdebug_backtrace_options.php:%d]
|
||||
#1 foo->doCall(doit, debug_print_backtrace) called at [%sdebug_backtrace_options.php:%d]
|
||||
#2 foo::statCall(doit, debug_print_backtrace) called at [%sdebug_backtrace_options.php:%d]
|
||||
==DEBUG_BACKTRACE_PROVIDE_OBJECT
|
||||
#0 doit(a, b, debug_print_backtrace) called at [%sdebug_backtrace_options.php:%d]
|
||||
#1 foo->doCall(doit, debug_print_backtrace) called at [%sdebug_backtrace_options.php:%d]
|
||||
#2 foo::statCall(doit, debug_print_backtrace) called at [%sdebug_backtrace_options.php:%d]
|
||||
==DEBUG_BACKTRACE_IGNORE_ARGS
|
||||
#0 doit() called at [%sdebug_backtrace_options.php:%d]
|
||||
#1 foo->doCall() called at [%sdebug_backtrace_options.php:%d]
|
||||
#2 foo::statCall() called at [%sdebug_backtrace_options.php:%d]
|
||||
==both
|
||||
#0 doit() called at [%sdebug_backtrace_options.php:%d]
|
||||
#1 foo->doCall() called at [%sdebug_backtrace_options.php:%d]
|
||||
#2 foo::statCall() called at [%sdebug_backtrace_options.php:%d]
|
||||
==default
|
||||
Array
|
||||
(
|
||||
[0] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => backtrace_print
|
||||
[args] => Array
|
||||
(
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[1] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => doit
|
||||
[args] => Array
|
||||
(
|
||||
[0] => a
|
||||
[1] => b
|
||||
[2] => backtrace_print
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[2] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => doCall
|
||||
[class] => foo
|
||||
[object] => foo Object
|
||||
(
|
||||
)
|
||||
|
||||
[type] => ->
|
||||
[args] => Array
|
||||
(
|
||||
[0] => doit
|
||||
[1] => backtrace_print
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[3] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => statCall
|
||||
[class] => foo
|
||||
[type] => ::
|
||||
[args] => Array
|
||||
(
|
||||
[0] => doit
|
||||
[1] => backtrace_print
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
==true
|
||||
Array
|
||||
(
|
||||
[0] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => 17
|
||||
[function] => backtrace_print
|
||||
[args] => Array
|
||||
(
|
||||
[0] => 1
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[1] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => doit
|
||||
[args] => Array
|
||||
(
|
||||
[0] => a
|
||||
[1] => b
|
||||
[2] => backtrace_print
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[2] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => doCall
|
||||
[class] => foo
|
||||
[object] => foo Object
|
||||
(
|
||||
)
|
||||
|
||||
[type] => ->
|
||||
[args] => Array
|
||||
(
|
||||
[0] => doit
|
||||
[1] => backtrace_print
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[3] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => statCall
|
||||
[class] => foo
|
||||
[type] => ::
|
||||
[args] => Array
|
||||
(
|
||||
[0] => doit
|
||||
[1] => backtrace_print
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
==false
|
||||
Array
|
||||
(
|
||||
[0] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => 19
|
||||
[function] => backtrace_print
|
||||
[args] => Array
|
||||
(
|
||||
[0] =>
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[1] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => doit
|
||||
[args] => Array
|
||||
(
|
||||
[0] => a
|
||||
[1] => b
|
||||
[2] => backtrace_print
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[2] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => doCall
|
||||
[class] => foo
|
||||
[type] => ->
|
||||
[args] => Array
|
||||
(
|
||||
[0] => doit
|
||||
[1] => backtrace_print
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[3] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => statCall
|
||||
[class] => foo
|
||||
[type] => ::
|
||||
[args] => Array
|
||||
(
|
||||
[0] => doit
|
||||
[1] => backtrace_print
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
==DEBUG_BACKTRACE_PROVIDE_OBJECT
|
||||
Array
|
||||
(
|
||||
[0] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => 21
|
||||
[function] => backtrace_print
|
||||
[args] => Array
|
||||
(
|
||||
[0] => 1
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[1] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => doit
|
||||
[args] => Array
|
||||
(
|
||||
[0] => a
|
||||
[1] => b
|
||||
[2] => backtrace_print
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[2] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => doCall
|
||||
[class] => foo
|
||||
[object] => foo Object
|
||||
(
|
||||
)
|
||||
|
||||
[type] => ->
|
||||
[args] => Array
|
||||
(
|
||||
[0] => doit
|
||||
[1] => backtrace_print
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[3] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => statCall
|
||||
[class] => foo
|
||||
[type] => ::
|
||||
[args] => Array
|
||||
(
|
||||
[0] => doit
|
||||
[1] => backtrace_print
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
==DEBUG_BACKTRACE_IGNORE_ARGS
|
||||
Array
|
||||
(
|
||||
[0] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => 23
|
||||
[function] => backtrace_print
|
||||
)
|
||||
|
||||
[1] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => doit
|
||||
)
|
||||
|
||||
[2] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => doCall
|
||||
[class] => foo
|
||||
[type] => ->
|
||||
)
|
||||
|
||||
[3] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => statCall
|
||||
[class] => foo
|
||||
[type] => ::
|
||||
)
|
||||
|
||||
)
|
||||
==both
|
||||
Array
|
||||
(
|
||||
[0] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => 25
|
||||
[function] => backtrace_print
|
||||
)
|
||||
|
||||
[1] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => doit
|
||||
)
|
||||
|
||||
[2] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => doCall
|
||||
[class] => foo
|
||||
[object] => foo Object
|
||||
(
|
||||
)
|
||||
|
||||
[type] => ->
|
||||
)
|
||||
|
||||
[3] => Array
|
||||
(
|
||||
[file] => %sdebug_backtrace_options.php
|
||||
[line] => %d
|
||||
[function] => statCall
|
||||
[class] => foo
|
||||
[type] => ::
|
||||
)
|
||||
|
||||
)
|
||||
@@ -20,4 +20,8 @@ echo "Done\n";
|
||||
--EXPECTF--
|
||||
string(12) "test thrown!"
|
||||
|
||||
Fatal error: Exception thrown without a stack frame in Unknown on line 0
|
||||
Fatal error: Uncaught exception 'Exception' in %sexception_handler_002.php:7
|
||||
Stack trace:
|
||||
#0 [internal function]: foo(Object(test))
|
||||
#1 {main}
|
||||
thrown in %sexception_handler_002.php on line %d
|
||||
@@ -0,0 +1,9 @@
|
||||
--TEST--
|
||||
Argument parsing error #001
|
||||
--FILE--
|
||||
<?php
|
||||
function foo($arg1 string) {}
|
||||
?>
|
||||
--EXPECTF--
|
||||
Parse error: syntax error, unexpected T_STRING, expecting ')' in %sfunction_arguments_001.php on line %d
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
--TEST--
|
||||
Argument parsing error #002
|
||||
--FILE--
|
||||
<?php
|
||||
function foo($arg1/) {}
|
||||
?>
|
||||
--EXPECTF--
|
||||
Parse error: syntax error, unexpected '/', expecting ')' in %sfunction_arguments_002.php on line %d
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
--TEST--
|
||||
Indirect referenced $this
|
||||
--FILE--
|
||||
<?php
|
||||
class X {
|
||||
function f($x){var_dump($$x);}
|
||||
}
|
||||
$x = new X;
|
||||
$x->f("this");
|
||||
?>
|
||||
--EXPECTF--
|
||||
object(X)#%d (0) {
|
||||
}
|
||||
@@ -38,6 +38,6 @@ bool(true)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(true)
|
||||
bool(false)
|
||||
bool(true)
|
||||
AUTOLOAD 'X1'
|
||||
bool(false)
|
||||
+3
-2
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -114,7 +114,7 @@ ZEND_API zval zval_used_for_init; /* True global variable */
|
||||
/* version information */
|
||||
static char *zend_version_info;
|
||||
static uint zend_version_info_length;
|
||||
#define ZEND_CORE_VERSION_INFO "Zend Engine v" ZEND_VERSION ", Copyright (c) 1998-2010 Zend Technologies\n"
|
||||
#define ZEND_CORE_VERSION_INFO "Zend Engine v" ZEND_VERSION ", Copyright (c) 1998-2011 Zend Technologies\n"
|
||||
#define PRINT_ZVAL_INDENT 4
|
||||
|
||||
static void print_hash(zend_write_func_t write_func, HashTable *ht, int indent, zend_bool is_object TSRMLS_DC) /* {{{ */
|
||||
@@ -808,6 +808,7 @@ ZEND_API void _zend_bailout(char *filename, uint lineno) /* {{{ */
|
||||
exit(-1);
|
||||
}
|
||||
CG(unclean_shutdown) = 1;
|
||||
CG(active_class_entry) = NULL;
|
||||
CG(in_compilation) = EG(in_execution) = 0;
|
||||
EG(current_execute_data) = NULL;
|
||||
LONGJMP(*EG(bailout), FAILURE);
|
||||
|
||||
+4
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -771,6 +771,9 @@ ZEND_API void zend_save_error_handling(zend_error_handling *current TSRMLS_DC);
|
||||
ZEND_API void zend_replace_error_handling(zend_error_handling_t error_handling, zend_class_entry *exception_class, zend_error_handling *current TSRMLS_DC);
|
||||
ZEND_API void zend_restore_error_handling(zend_error_handling *saved TSRMLS_DC);
|
||||
|
||||
#define DEBUG_BACKTRACE_PROVIDE_OBJECT (1<<0)
|
||||
#define DEBUG_BACKTRACE_IGNORE_ARGS (1<<1)
|
||||
|
||||
#endif /* ZEND_H */
|
||||
|
||||
/*
|
||||
|
||||
+24
-2
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -928,7 +928,7 @@ ZEND_API int zend_parse_method_parameters_ex(int flags, int num_args TSRMLS_DC,
|
||||
va_end(va);
|
||||
} else {
|
||||
p++;
|
||||
RETURN_IF_ZERO_ARGS(num_args-1, p, quiet);
|
||||
RETURN_IF_ZERO_ARGS(num_args, p, quiet);
|
||||
|
||||
va_start(va, type_spec);
|
||||
|
||||
@@ -2082,6 +2082,22 @@ ZEND_API int zend_get_module_started(const char *module_name) /* {{{ */
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
static int clean_module_class(const zend_class_entry **ce, int *module_number TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
if ((*ce)->type == ZEND_INTERNAL_CLASS && (*ce)->module->module_number == *module_number) {
|
||||
return ZEND_HASH_APPLY_REMOVE;
|
||||
} else {
|
||||
return ZEND_HASH_APPLY_KEEP;
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
static void clean_module_classes(int module_number TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
zend_hash_apply_with_argument(EG(class_table), (apply_func_arg_t) clean_module_class, (void *) &module_number TSRMLS_CC);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
void module_destructor(zend_module_entry *module) /* {{{ */
|
||||
{
|
||||
TSRMLS_FETCH();
|
||||
@@ -2089,6 +2105,7 @@ void module_destructor(zend_module_entry *module) /* {{{ */
|
||||
if (module->type == MODULE_TEMPORARY) {
|
||||
zend_clean_module_rsrc_dtors(module->module_number TSRMLS_CC);
|
||||
clean_module_constants(module->module_number TSRMLS_CC);
|
||||
clean_module_classes(module->module_number TSRMLS_CC);
|
||||
}
|
||||
|
||||
if (module->module_started && module->module_shutdown_func) {
|
||||
@@ -2573,6 +2590,11 @@ get_function_via_handler:
|
||||
if (fcc->function_handler) {
|
||||
retval = 1;
|
||||
call_via_handler = (fcc->function_handler->common.fn_flags & ZEND_ACC_CALL_VIA_HANDLER) != 0;
|
||||
if (call_via_handler && !fcc->object_ptr && EG(This) &&
|
||||
Z_OBJ_HT_P(EG(This))->get_class_entry &&
|
||||
instanceof_function(Z_OBJCE_P(EG(This)), fcc->calling_scope TSRMLS_CC)) {
|
||||
fcc->object_ptr = EG(This);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+12
-2
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -241,6 +241,10 @@ static zend_mm_storage* zend_mm_mem_win32_init(void *params)
|
||||
return NULL;
|
||||
}
|
||||
storage = (zend_mm_storage*)malloc(sizeof(zend_mm_storage));
|
||||
if (storage == NULL) {
|
||||
HeapDestroy(heap);
|
||||
return NULL;
|
||||
}
|
||||
storage->data = (void*) heap;
|
||||
return storage;
|
||||
}
|
||||
@@ -1066,7 +1070,13 @@ ZEND_API zend_mm_heap *zend_mm_startup_ex(const zend_mm_mem_handlers *handlers,
|
||||
storage->handlers = handlers;
|
||||
|
||||
heap = malloc(sizeof(struct _zend_mm_heap));
|
||||
|
||||
if (heap == NULL) {
|
||||
fprintf(stderr, "Cannot allocate heap for zend_mm storage [%s]\n", handlers->name);
|
||||
#ifdef PHP_WIN32
|
||||
fflush(stderr);
|
||||
#endif
|
||||
exit(255);
|
||||
}
|
||||
heap->storage = storage;
|
||||
heap->block_size = block_size;
|
||||
heap->compact_size = 0;
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -211,7 +211,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_get_defined_constants, 0, 0, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_debug_backtrace, 0, 0, 0)
|
||||
ZEND_ARG_INFO(0, provide_object)
|
||||
ZEND_ARG_INFO(0, options)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_extension_loaded, 0, 0, 1)
|
||||
@@ -272,7 +272,7 @@ static const zend_function_entry builtin_functions[] = { /* {{{ */
|
||||
ZEND_FE(get_extension_funcs, arginfo_extension_loaded)
|
||||
ZEND_FE(get_defined_constants, arginfo_get_defined_constants)
|
||||
ZEND_FE(debug_backtrace, arginfo_debug_backtrace)
|
||||
ZEND_FE(debug_print_backtrace, arginfo_zend__void)
|
||||
ZEND_FE(debug_print_backtrace, arginfo_debug_backtrace)
|
||||
#if ZEND_DEBUG
|
||||
ZEND_FE(zend_test_func, NULL)
|
||||
#ifdef ZTS
|
||||
@@ -822,45 +822,25 @@ static void is_a_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool only_subclass)
|
||||
return;
|
||||
}
|
||||
|
||||
if (only_subclass && Z_TYPE_P(obj) == IS_STRING) {
|
||||
if (Z_TYPE_P(obj) == IS_STRING) {
|
||||
zend_class_entry **the_ce;
|
||||
if (zend_lookup_class(Z_STRVAL_P(obj), Z_STRLEN_P(obj), &the_ce TSRMLS_CC) == FAILURE) {
|
||||
zend_error(E_WARNING, "Unknown class passed as parameter");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
instance_ce = *the_ce;
|
||||
} else if (Z_TYPE_P(obj) != IS_OBJECT) {
|
||||
RETURN_FALSE;
|
||||
} else if (Z_TYPE_P(obj) == IS_OBJECT && HAS_CLASS_ENTRY(*obj)) {
|
||||
instance_ce = Z_OBJCE_P(obj);
|
||||
} else {
|
||||
instance_ce = NULL;
|
||||
}
|
||||
|
||||
/* TBI!! new object handlers */
|
||||
if (Z_TYPE_P(obj) == IS_OBJECT && !HAS_CLASS_ENTRY(*obj)) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (zend_lookup_class_ex(class_name, class_name_len, 0, &ce TSRMLS_CC) == FAILURE) {
|
||||
retval = 0;
|
||||
} else {
|
||||
if (only_subclass) {
|
||||
if (!instance_ce) {
|
||||
instance_ce = Z_OBJCE_P(obj)->parent;
|
||||
} else {
|
||||
instance_ce = instance_ce->parent;
|
||||
}
|
||||
} else {
|
||||
instance_ce = Z_OBJCE_P(obj);
|
||||
}
|
||||
|
||||
if (!instance_ce) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (instanceof_function(instance_ce, *ce TSRMLS_CC)) {
|
||||
retval = 1;
|
||||
} else {
|
||||
if (only_subclass && instance_ce == *ce) {
|
||||
retval = 0;
|
||||
} else {
|
||||
retval = instanceof_function(instance_ce, *ce TSRMLS_CC);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1944,7 +1924,7 @@ void debug_print_backtrace_args(zval *arg_array TSRMLS_DC)
|
||||
}
|
||||
}
|
||||
|
||||
/* {{{ proto void debug_print_backtrace(void) */
|
||||
/* {{{ proto void debug_print_backtrace([int options]) */
|
||||
ZEND_FUNCTION(debug_print_backtrace)
|
||||
{
|
||||
zend_execute_data *ptr, *skip;
|
||||
@@ -1956,8 +1936,9 @@ ZEND_FUNCTION(debug_print_backtrace)
|
||||
char *include_filename = NULL;
|
||||
zval *arg_array = NULL;
|
||||
int indent = 0;
|
||||
long options = 0;
|
||||
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &options) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2016,7 +1997,7 @@ ZEND_FUNCTION(debug_print_backtrace)
|
||||
call_type = NULL;
|
||||
}
|
||||
if ((! ptr->opline) || ((ptr->opline->opcode == ZEND_DO_FCALL_BY_NAME) || (ptr->opline->opcode == ZEND_DO_FCALL))) {
|
||||
if (ptr->function_state.arguments) {
|
||||
if (ptr->function_state.arguments && (options & DEBUG_BACKTRACE_IGNORE_ARGS) == 0) {
|
||||
arg_array = debug_backtrace_get_args(ptr->function_state.arguments TSRMLS_CC);
|
||||
}
|
||||
}
|
||||
@@ -2103,7 +2084,7 @@ ZEND_FUNCTION(debug_print_backtrace)
|
||||
|
||||
/* }}} */
|
||||
|
||||
ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last, int provide_object TSRMLS_DC)
|
||||
ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last, int options TSRMLS_DC)
|
||||
{
|
||||
zend_execute_data *ptr, *skip;
|
||||
int lineno;
|
||||
@@ -2187,7 +2168,7 @@ ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last, int
|
||||
add_assoc_string_ex(stack_frame, "class", sizeof("class"), class_name, dup);
|
||||
|
||||
}
|
||||
if (provide_object) {
|
||||
if ((options & DEBUG_BACKTRACE_PROVIDE_OBJECT) != 0) {
|
||||
add_assoc_zval_ex(stack_frame, "object", sizeof("object"), ptr->object);
|
||||
Z_ADDREF_P(ptr->object);
|
||||
}
|
||||
@@ -2198,7 +2179,8 @@ ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last, int
|
||||
add_assoc_string_ex(stack_frame, "type", sizeof("type"), "::", 1);
|
||||
}
|
||||
|
||||
if ((! ptr->opline) || ((ptr->opline->opcode == ZEND_DO_FCALL_BY_NAME) || (ptr->opline->opcode == ZEND_DO_FCALL))) {
|
||||
if ((options & DEBUG_BACKTRACE_IGNORE_ARGS) == 0 &&
|
||||
((! ptr->opline) || ((ptr->opline->opcode == ZEND_DO_FCALL_BY_NAME) || (ptr->opline->opcode == ZEND_DO_FCALL)))) {
|
||||
if (ptr->function_state.arguments) {
|
||||
add_assoc_zval_ex(stack_frame, "args", sizeof("args"), debug_backtrace_get_args(ptr->function_state.arguments TSRMLS_CC));
|
||||
}
|
||||
@@ -2264,17 +2246,17 @@ ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last, int
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto array debug_backtrace([bool provide_object])
|
||||
/* {{{ proto array debug_backtrace([int options])
|
||||
Return backtrace as array */
|
||||
ZEND_FUNCTION(debug_backtrace)
|
||||
{
|
||||
zend_bool provide_object = 1;
|
||||
long options = DEBUG_BACKTRACE_PROVIDE_OBJECT;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &provide_object) == FAILURE) {
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &options) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
zend_fetch_debug_backtrace(return_value, 1, provide_object TSRMLS_CC);
|
||||
zend_fetch_debug_backtrace(return_value, 1, options TSRMLS_CC);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -25,7 +25,7 @@
|
||||
int zend_startup_builtin_functions(TSRMLS_D);
|
||||
|
||||
BEGIN_EXTERN_C()
|
||||
ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last, int provide_object TSRMLS_DC);
|
||||
ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last, int options TSRMLS_DC);
|
||||
END_EXTERN_C()
|
||||
|
||||
#endif /* ZEND_BUILTIN_FUNCTIONS_H */
|
||||
|
||||
+16
-7
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -323,6 +323,7 @@ static int zval_copy_static_var(zval **p TSRMLS_DC, int num_args, va_list args,
|
||||
{
|
||||
HashTable *target = va_arg(args, HashTable*);
|
||||
zend_bool is_ref;
|
||||
zval *tmp;
|
||||
|
||||
if (Z_TYPE_PP(p) & (IS_LEXICAL_VAR|IS_LEXICAL_REF)) {
|
||||
is_ref = Z_TYPE_PP(p) & IS_LEXICAL_REF;
|
||||
@@ -332,25 +333,32 @@ static int zval_copy_static_var(zval **p TSRMLS_DC, int num_args, va_list args,
|
||||
}
|
||||
if (zend_hash_quick_find(EG(active_symbol_table), key->arKey, key->nKeyLength, key->h, (void **) &p) == FAILURE) {
|
||||
if (is_ref) {
|
||||
zval *tmp;
|
||||
|
||||
ALLOC_INIT_ZVAL(tmp);
|
||||
Z_SET_ISREF_P(tmp);
|
||||
zend_hash_quick_add(EG(active_symbol_table), key->arKey, key->nKeyLength, key->h, &tmp, sizeof(zval*), (void**)&p);
|
||||
} else {
|
||||
p = &EG(uninitialized_zval_ptr);
|
||||
tmp = EG(uninitialized_zval_ptr);
|
||||
zend_error(E_NOTICE,"Undefined variable: %s", key->arKey);
|
||||
}
|
||||
} else {
|
||||
if (is_ref) {
|
||||
SEPARATE_ZVAL_TO_MAKE_IS_REF(p);
|
||||
tmp = *p;
|
||||
} else if (Z_ISREF_PP(p)) {
|
||||
SEPARATE_ZVAL(p);
|
||||
ALLOC_INIT_ZVAL(tmp);
|
||||
*tmp = **p;
|
||||
zval_copy_ctor(tmp);
|
||||
Z_SET_REFCOUNT_P(tmp, 0);
|
||||
Z_UNSET_ISREF_P(tmp);
|
||||
} else {
|
||||
tmp = *p;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
tmp = *p;
|
||||
}
|
||||
if (zend_hash_quick_add(target, key->arKey, key->nKeyLength, key->h, p, sizeof(zval*), NULL) == SUCCESS) {
|
||||
Z_ADDREF_PP(p);
|
||||
if (zend_hash_quick_add(target, key->arKey, key->nKeyLength, key->h, &tmp, sizeof(zval*), NULL) == SUCCESS) {
|
||||
Z_ADDREF_P(tmp);
|
||||
}
|
||||
return ZEND_HASH_APPLY_KEEP;
|
||||
}
|
||||
@@ -365,6 +373,7 @@ ZEND_API void zend_create_closure(zval *res, zend_function *func TSRMLS_DC) /* {
|
||||
closure = (zend_closure *)zend_object_store_get_object(res TSRMLS_CC);
|
||||
|
||||
closure->func = *func;
|
||||
closure->func.common.prototype = NULL;
|
||||
|
||||
if (closure->func.type == ZEND_USER_FUNCTION) {
|
||||
if (closure->func.op_array.static_variables) {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+89
-63
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -387,6 +387,7 @@ void fetch_simple_variable_ex(znode *result, znode *varname, int bp, zend_uchar
|
||||
result->op_type = IS_CV;
|
||||
result->u.var = lookup_cv(CG(active_op_array), varname->u.constant.value.str.val, varname->u.constant.value.str.len);
|
||||
result->u.EA.type = 0;
|
||||
varname->u.constant.value.str.val = CG(active_op_array)->vars[result->u.var].name;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -625,7 +626,7 @@ void zend_do_assign(znode *result, znode *variable, const znode *value TSRMLS_DC
|
||||
if (variable->op_type == IS_CV) {
|
||||
if (variable->u.var == CG(active_op_array)->this_var) {
|
||||
zend_error(E_COMPILE_ERROR, "Cannot re-assign $this");
|
||||
}
|
||||
}
|
||||
} else if (variable->op_type == IS_VAR) {
|
||||
int n = 0;
|
||||
|
||||
@@ -705,7 +706,7 @@ void zend_do_assign_ref(znode *result, const znode *lvar, const znode *rvar TSRM
|
||||
if (lvar->op_type == IS_CV) {
|
||||
if (lvar->u.var == CG(active_op_array)->this_var) {
|
||||
zend_error(E_COMPILE_ERROR, "Cannot re-assign $this");
|
||||
}
|
||||
}
|
||||
} else if (lvar->op_type == IS_VAR) {
|
||||
int last_op_number = get_next_op_number(CG(active_op_array));
|
||||
|
||||
@@ -1008,7 +1009,7 @@ void zend_do_end_variable_parse(znode *variable, int type, int arg_offset TSRMLS
|
||||
variable->op_type = IS_CV;
|
||||
variable->u.var = CG(active_op_array)->this_var;
|
||||
}
|
||||
} else if (CG(active_op_array)->this_var == -1) {
|
||||
} else if (CG(active_op_array)->this_var == -1) {
|
||||
CG(active_op_array)->this_var = lookup_cv(CG(active_op_array), estrndup("this", sizeof("this")-1), sizeof("this")-1);
|
||||
}
|
||||
}
|
||||
@@ -1894,14 +1895,14 @@ void zend_resolve_goto_label(zend_op_array *op_array, zend_op *opline, int pass2
|
||||
long current, distance;
|
||||
|
||||
if (CG(labels) == NULL ||
|
||||
zend_hash_find(CG(labels), Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant)+1, (void**)&dest) == FAILURE) {
|
||||
zend_hash_find(CG(labels), Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant)+1, (void**)&dest) == FAILURE) {
|
||||
|
||||
if (pass2) {
|
||||
CG(in_compilation) = 1;
|
||||
CG(active_op_array) = op_array;
|
||||
CG(zend_lineno) = opline->lineno;
|
||||
if (pass2) {
|
||||
CG(in_compilation) = 1;
|
||||
CG(active_op_array) = op_array;
|
||||
CG(zend_lineno) = opline->lineno;
|
||||
zend_error(E_COMPILE_ERROR, "'goto' to undefined label '%s'", Z_STRVAL(opline->op2.u.constant));
|
||||
} else {
|
||||
} else {
|
||||
/* Label is not defined. Delay to pass 2. */
|
||||
INC_BPC(op_array);
|
||||
return;
|
||||
@@ -1915,11 +1916,11 @@ void zend_resolve_goto_label(zend_op_array *op_array, zend_op *opline, int pass2
|
||||
current = opline->extended_value;
|
||||
for (distance = 0; current != dest->brk_cont; distance++) {
|
||||
if (current == -1) {
|
||||
if (pass2) {
|
||||
CG(in_compilation) = 1;
|
||||
CG(active_op_array) = op_array;
|
||||
CG(zend_lineno) = opline->lineno;
|
||||
}
|
||||
if (pass2) {
|
||||
CG(in_compilation) = 1;
|
||||
CG(active_op_array) = op_array;
|
||||
CG(zend_lineno) = opline->lineno;
|
||||
}
|
||||
zend_error(E_COMPILE_ERROR, "'goto' into loop or switch statement is disallowed");
|
||||
}
|
||||
current = op_array->brk_cont_array[current].parent;
|
||||
@@ -1935,9 +1936,9 @@ void zend_resolve_goto_label(zend_op_array *op_array, zend_op *opline, int pass2
|
||||
ZVAL_LONG(&opline->op2.u.constant, distance);
|
||||
}
|
||||
|
||||
if (pass2) {
|
||||
if (pass2) {
|
||||
DEC_BPC(op_array);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -2009,7 +2010,7 @@ int zend_do_begin_class_member_function_call(znode *class_name, znode *method_na
|
||||
if (method_name->op_type == IS_CONST) {
|
||||
char *lcname = zend_str_tolower_dup(Z_STRVAL(method_name->u.constant), Z_STRLEN(method_name->u.constant));
|
||||
if ((sizeof(ZEND_CONSTRUCTOR_FUNC_NAME)-1) == Z_STRLEN(method_name->u.constant) &&
|
||||
memcmp(lcname, ZEND_CONSTRUCTOR_FUNC_NAME, sizeof(ZEND_CONSTRUCTOR_FUNC_NAME)-1) == 0) {
|
||||
memcmp(lcname, ZEND_CONSTRUCTOR_FUNC_NAME, sizeof(ZEND_CONSTRUCTOR_FUNC_NAME)-1) == 0) {
|
||||
zval_dtor(&method_name->u.constant);
|
||||
SET_UNUSED(*method_name);
|
||||
}
|
||||
@@ -2017,7 +2018,7 @@ int zend_do_begin_class_member_function_call(znode *class_name, znode *method_na
|
||||
}
|
||||
|
||||
if (class_name->op_type == IS_CONST &&
|
||||
ZEND_FETCH_CLASS_DEFAULT == zend_get_class_fetch_type(Z_STRVAL(class_name->u.constant), Z_STRLEN(class_name->u.constant))) {
|
||||
ZEND_FETCH_CLASS_DEFAULT == zend_get_class_fetch_type(Z_STRVAL(class_name->u.constant), Z_STRLEN(class_name->u.constant))) {
|
||||
fetch_type = ZEND_FETCH_CLASS_GLOBAL;
|
||||
zend_resolve_class_name(class_name, &fetch_type, 1 TSRMLS_CC);
|
||||
class_node = *class_name;
|
||||
@@ -2080,9 +2081,9 @@ void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC) /* {{
|
||||
|
||||
if (original_op == ZEND_SEND_REF && !CG(allow_call_time_pass_reference)) {
|
||||
if (function_ptr &&
|
||||
function_ptr->common.function_name &&
|
||||
function_ptr->common.type == ZEND_USER_FUNCTION &&
|
||||
!ARG_SHOULD_BE_SENT_BY_REF(function_ptr, (zend_uint) offset)) {
|
||||
function_ptr->common.function_name &&
|
||||
function_ptr->common.type == ZEND_USER_FUNCTION &&
|
||||
!ARG_SHOULD_BE_SENT_BY_REF(function_ptr, (zend_uint) offset)) {
|
||||
zend_error(E_DEPRECATED,
|
||||
"Call-time pass-by-reference has been deprecated; "
|
||||
"If you would like to pass it by reference, modify the declaration of %s(). "
|
||||
@@ -2528,7 +2529,7 @@ static void do_inherit_method(zend_function *function) /* {{{ */
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
static zend_bool zend_do_perform_implementation_check(const zend_function *fe, const zend_function *proto) /* {{{ */
|
||||
static zend_bool zend_do_perform_implementation_check(const zend_function *fe, const zend_function *proto TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
zend_uint i;
|
||||
|
||||
@@ -2571,11 +2572,24 @@ static zend_bool zend_do_perform_implementation_check(const zend_function *fe, c
|
||||
&& strcasecmp(fe->common.arg_info[i].class_name, proto->common.arg_info[i].class_name)!=0) {
|
||||
char *colon;
|
||||
|
||||
if (fe->common.type != ZEND_USER_FUNCTION ||
|
||||
strchr(proto->common.arg_info[i].class_name, '\\') != NULL ||
|
||||
if (fe->common.type != ZEND_USER_FUNCTION) {
|
||||
return 0;
|
||||
} else if (strchr(proto->common.arg_info[i].class_name, '\\') != NULL ||
|
||||
(colon = zend_memrchr(fe->common.arg_info[i].class_name, '\\', fe->common.arg_info[i].class_name_len)) == NULL ||
|
||||
strcasecmp(colon+1, proto->common.arg_info[i].class_name) != 0) {
|
||||
return 0;
|
||||
zend_class_entry **fe_ce, **proto_ce;
|
||||
int found, found2;
|
||||
|
||||
found = zend_lookup_class(fe->common.arg_info[i].class_name, fe->common.arg_info[i].class_name_len, &fe_ce TSRMLS_CC);
|
||||
found2 = zend_lookup_class(proto->common.arg_info[i].class_name, proto->common.arg_info[i].class_name_len, &proto_ce TSRMLS_CC);
|
||||
|
||||
/* Check for class alias */
|
||||
if (found != SUCCESS || found2 != SUCCESS ||
|
||||
(*fe_ce)->type == ZEND_INTERNAL_CLASS ||
|
||||
(*proto_ce)->type == ZEND_INTERNAL_CLASS ||
|
||||
*fe_ce != *proto_ce) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (fe->common.arg_info[i].array_type_hint != proto->common.arg_info[i].array_type_hint) {
|
||||
@@ -2667,11 +2681,11 @@ static zend_bool do_inherit_method_check(HashTable *child_function_table, zend_f
|
||||
}
|
||||
|
||||
if (child->common.prototype && (child->common.prototype->common.fn_flags & ZEND_ACC_ABSTRACT)) {
|
||||
if (!zend_do_perform_implementation_check(child, child->common.prototype)) {
|
||||
if (!zend_do_perform_implementation_check(child, child->common.prototype TSRMLS_CC)) {
|
||||
zend_error(E_COMPILE_ERROR, "Declaration of %s::%s() must be compatible with that of %s::%s()", ZEND_FN_SCOPE_NAME(child), child->common.function_name, ZEND_FN_SCOPE_NAME(child->common.prototype), child->common.prototype->common.function_name);
|
||||
}
|
||||
} else if (EG(error_reporting) & E_STRICT || EG(user_error_handler)) { /* Check E_STRICT (or custom error handler) before the check so that we save some time */
|
||||
if (!zend_do_perform_implementation_check(child, parent)) {
|
||||
if (!zend_do_perform_implementation_check(child, parent TSRMLS_CC)) {
|
||||
zend_error(E_STRICT, "Declaration of %s::%s() should be compatible with that of %s::%s()", ZEND_FN_SCOPE_NAME(child), child->common.function_name, ZEND_FN_SCOPE_NAME(parent), parent->common.function_name);
|
||||
}
|
||||
}
|
||||
@@ -3059,9 +3073,9 @@ void zend_do_early_binding(TSRMLS_D) /* {{{ */
|
||||
zend_class_entry **pce;
|
||||
|
||||
if ((zend_lookup_class(Z_STRVAL_P(parent_name), Z_STRLEN_P(parent_name), &pce TSRMLS_CC) == FAILURE) ||
|
||||
((CG(compiler_options) & ZEND_COMPILE_IGNORE_INTERNAL_CLASSES) &&
|
||||
((*pce)->type == ZEND_INTERNAL_CLASS))) {
|
||||
if (CG(compiler_options) & ZEND_COMPILE_DELAYED_BINDING) {
|
||||
((CG(compiler_options) & ZEND_COMPILE_IGNORE_INTERNAL_CLASSES) &&
|
||||
((*pce)->type == ZEND_INTERNAL_CLASS))) {
|
||||
if (CG(compiler_options) & ZEND_COMPILE_DELAYED_BINDING) {
|
||||
zend_uint *opline_num = &CG(active_op_array)->early_binding;
|
||||
|
||||
while (*opline_num != -1) {
|
||||
@@ -3391,7 +3405,7 @@ void zend_do_begin_class_declaration(const znode *class_token, znode *class_name
|
||||
|
||||
/* Class name must not conflict with import names */
|
||||
if (CG(current_import) &&
|
||||
zend_hash_find(CG(current_import), lcname, Z_STRLEN(class_name->u.constant)+1, (void**)&ns_name) == SUCCESS) {
|
||||
zend_hash_find(CG(current_import), lcname, Z_STRLEN(class_name->u.constant)+1, (void**)&ns_name) == SUCCESS) {
|
||||
error = 1;
|
||||
}
|
||||
|
||||
@@ -3626,7 +3640,7 @@ void zend_do_declare_property(const znode *var_name, const znode *value, zend_ui
|
||||
|
||||
if (access_type & ZEND_ACC_FINAL) {
|
||||
zend_error(E_COMPILE_ERROR, "Cannot declare property %s::$%s final, the final modifier is allowed only for methods and classes",
|
||||
CG(active_class_entry)->name, var_name->u.constant.value.str.val);
|
||||
CG(active_class_entry)->name, var_name->u.constant.value.str.val);
|
||||
}
|
||||
|
||||
if (zend_hash_find(&CG(active_class_entry)->properties_info, var_name->u.constant.value.str.val, var_name->u.constant.value.str.len+1, (void **) &existing_property_info)==SUCCESS) {
|
||||
@@ -3689,8 +3703,8 @@ void zend_do_fetch_property(znode *result, znode *object, const znode *property
|
||||
|
||||
if (object->op_type == IS_CV) {
|
||||
if (object->u.var == CG(active_op_array)->this_var) {
|
||||
SET_UNUSED(*object); /* this means $this for objects */
|
||||
}
|
||||
SET_UNUSED(*object); /* this means $this for objects */
|
||||
}
|
||||
} else if (fetch_list_ptr->count == 1) {
|
||||
zend_llist_element *le = fetch_list_ptr->head;
|
||||
zend_op *opline_ptr = (zend_op *) le->data;
|
||||
@@ -3748,6 +3762,10 @@ void zend_do_halt_compiler_register(TSRMLS_D) /* {{{ */
|
||||
zend_mangle_property_name(&name, &len, haltoff, sizeof(haltoff) - 1, cfilename, clen, 0);
|
||||
zend_register_long_constant(name, len+1, zend_get_scanned_file_offset(TSRMLS_C), CONST_CS, 0 TSRMLS_CC);
|
||||
pefree(name, 0);
|
||||
|
||||
if (CG(in_namespace)) {
|
||||
zend_do_end_namespace(TSRMLS_C);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -3865,10 +3883,10 @@ static zend_constant* zend_get_ct_const(const zval *const_name, int all_internal
|
||||
return c;
|
||||
}
|
||||
if (all_internal_constants_substitution &&
|
||||
(c->flags & CONST_PERSISTENT) &&
|
||||
!(CG(compiler_options) & ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION) &&
|
||||
Z_TYPE(c->value) != IS_CONSTANT &&
|
||||
Z_TYPE(c->value) != IS_CONSTANT_ARRAY) {
|
||||
(c->flags & CONST_PERSISTENT) &&
|
||||
!(CG(compiler_options) & ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION) &&
|
||||
Z_TYPE(c->value) != IS_CONSTANT &&
|
||||
Z_TYPE(c->value) != IS_CONSTANT_ARRAY) {
|
||||
return c;
|
||||
}
|
||||
return NULL;
|
||||
@@ -4261,7 +4279,7 @@ void zend_do_fetch_lexical_variable(znode *varname, zend_bool is_ref TSRMLS_DC)
|
||||
znode value;
|
||||
|
||||
if (Z_STRLEN(varname->u.constant) == sizeof("this") - 1 &&
|
||||
memcmp(Z_STRVAL(varname->u.constant), "this", sizeof("this") - 1) == 0) {
|
||||
memcmp(Z_STRVAL(varname->u.constant), "this", sizeof("this") - 1) == 0) {
|
||||
zend_error(E_COMPILE_ERROR, "Cannot use $this as lexical variable");
|
||||
return;
|
||||
}
|
||||
@@ -4351,6 +4369,10 @@ void zend_do_indirect_references(znode *result, const znode *num_references, zno
|
||||
}
|
||||
zend_do_begin_variable_parse(TSRMLS_C);
|
||||
fetch_simple_variable(result, variable, 1 TSRMLS_CC);
|
||||
/* there is a chance someone is accessing $this */
|
||||
if (CG(active_op_array)->scope && CG(active_op_array)->this_var == -1) {
|
||||
CG(active_op_array)->this_var = lookup_cv(CG(active_op_array), estrndup("this", sizeof("this")-1), sizeof("this")-1);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -4471,7 +4493,7 @@ void zend_do_foreach_begin(znode *foreach_token, znode *open_brackets_token, zno
|
||||
open_brackets_token->u.opline_num = get_next_op_number(CG(active_op_array));
|
||||
zend_do_end_variable_parse(array, BP_VAR_W, 0 TSRMLS_CC);
|
||||
if (CG(active_op_array)->last > 0 &&
|
||||
CG(active_op_array)->opcodes[CG(active_op_array)->last-1].opcode == ZEND_FETCH_OBJ_W) {
|
||||
CG(active_op_array)->opcodes[CG(active_op_array)->last-1].opcode == ZEND_FETCH_OBJ_W) {
|
||||
/* Only lock the container if we are fetching from a real container and not $this */
|
||||
if (CG(active_op_array)->opcodes[CG(active_op_array)->last-1].op1.op_type == IS_VAR) {
|
||||
CG(active_op_array)->opcodes[CG(active_op_array)->last-1].extended_value |= ZEND_FETCH_ADD_LOCK;
|
||||
@@ -4658,8 +4680,8 @@ void zend_do_declare_stmt(znode *var, znode *val TSRMLS_DC) /* {{{ */
|
||||
int num = CG(active_op_array)->last;
|
||||
/* ignore ZEND_EXT_STMT and ZEND_TICKS */
|
||||
while (num > 0 &&
|
||||
(CG(active_op_array)->opcodes[num-1].opcode == ZEND_EXT_STMT ||
|
||||
CG(active_op_array)->opcodes[num-1].opcode == ZEND_TICKS)) {
|
||||
(CG(active_op_array)->opcodes[num-1].opcode == ZEND_EXT_STMT ||
|
||||
CG(active_op_array)->opcodes[num-1].opcode == ZEND_TICKS)) {
|
||||
--num;
|
||||
}
|
||||
|
||||
@@ -4892,14 +4914,12 @@ void zend_do_extended_fcall_end(TSRMLS_D) /* {{{ */
|
||||
|
||||
void zend_do_ticks(TSRMLS_D) /* {{{ */
|
||||
{
|
||||
if (Z_LVAL(CG(declarables).ticks)) {
|
||||
zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC);
|
||||
zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC);
|
||||
|
||||
opline->opcode = ZEND_TICKS;
|
||||
opline->op1.u.constant = CG(declarables).ticks;
|
||||
opline->op1.op_type = IS_CONST;
|
||||
SET_UNUSED(opline->op2);
|
||||
}
|
||||
opline->opcode = ZEND_TICKS;
|
||||
opline->op1.u.constant = CG(declarables).ticks;
|
||||
opline->op1.op_type = IS_CONST;
|
||||
SET_UNUSED(opline->op2);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -5073,7 +5093,7 @@ void zend_do_build_namespace_name(znode *result, znode *prefix, znode *name TSRM
|
||||
if (prefix) {
|
||||
*result = *prefix;
|
||||
if (Z_TYPE(result->u.constant) == IS_STRING &&
|
||||
Z_STRLEN(result->u.constant) == 0) {
|
||||
Z_STRLEN(result->u.constant) == 0) {
|
||||
/* namespace\ */
|
||||
if (CG(current_namespace)) {
|
||||
znode tmp;
|
||||
@@ -5121,8 +5141,8 @@ void zend_do_begin_namespace(const znode *name, zend_bool with_bracket TSRMLS_DC
|
||||
/* ignore ZEND_EXT_STMT and ZEND_TICKS */
|
||||
int num = CG(active_op_array)->last;
|
||||
while (num > 0 &&
|
||||
(CG(active_op_array)->opcodes[num-1].opcode == ZEND_EXT_STMT ||
|
||||
CG(active_op_array)->opcodes[num-1].opcode == ZEND_TICKS)) {
|
||||
(CG(active_op_array)->opcodes[num-1].opcode == ZEND_EXT_STMT ||
|
||||
CG(active_op_array)->opcodes[num-1].opcode == ZEND_TICKS)) {
|
||||
--num;
|
||||
}
|
||||
if (num > 0) {
|
||||
@@ -5138,9 +5158,9 @@ void zend_do_begin_namespace(const znode *name, zend_bool with_bracket TSRMLS_DC
|
||||
if (name) {
|
||||
lcname = zend_str_tolower_dup(Z_STRVAL(name->u.constant), Z_STRLEN(name->u.constant));
|
||||
if (((Z_STRLEN(name->u.constant) == sizeof("self")-1) &&
|
||||
!memcmp(lcname, "self", sizeof("self")-1)) ||
|
||||
((Z_STRLEN(name->u.constant) == sizeof("parent")-1) &&
|
||||
!memcmp(lcname, "parent", sizeof("parent")-1))) {
|
||||
!memcmp(lcname, "self", sizeof("self")-1)) ||
|
||||
((Z_STRLEN(name->u.constant) == sizeof("parent")-1) &&
|
||||
!memcmp(lcname, "parent", sizeof("parent")-1))) {
|
||||
zend_error(E_COMPILE_ERROR, "Cannot use '%s' as namespace name", Z_STRVAL(name->u.constant));
|
||||
}
|
||||
efree(lcname);
|
||||
@@ -5202,9 +5222,9 @@ void zend_do_use(znode *ns_name, znode *new_name, int is_global TSRMLS_DC) /* {{
|
||||
lcname = zend_str_tolower_dup(Z_STRVAL_P(name), Z_STRLEN_P(name));
|
||||
|
||||
if (((Z_STRLEN_P(name) == sizeof("self")-1) &&
|
||||
!memcmp(lcname, "self", sizeof("self")-1)) ||
|
||||
((Z_STRLEN_P(name) == sizeof("parent")-1) &&
|
||||
!memcmp(lcname, "parent", sizeof("parent")-1))) {
|
||||
!memcmp(lcname, "self", sizeof("self")-1)) ||
|
||||
((Z_STRLEN_P(name) == sizeof("parent")-1) &&
|
||||
!memcmp(lcname, "parent", sizeof("parent")-1))) {
|
||||
zend_error(E_COMPILE_ERROR, "Cannot use %s as %s because '%s' is a special class name", Z_STRVAL_P(ns), Z_STRVAL_P(name), Z_STRVAL_P(name));
|
||||
}
|
||||
|
||||
@@ -5216,13 +5236,13 @@ void zend_do_use(znode *ns_name, znode *new_name, int is_global TSRMLS_DC) /* {{
|
||||
c_ns_name[Z_STRLEN_P(CG(current_namespace))] = '\\';
|
||||
memcpy(c_ns_name+Z_STRLEN_P(CG(current_namespace))+1, lcname, Z_STRLEN_P(name)+1);
|
||||
if (zend_hash_exists(CG(class_table), c_ns_name, Z_STRLEN_P(CG(current_namespace)) + 1 + Z_STRLEN_P(name)+1)) {
|
||||
char *tmp = zend_str_tolower_dup(Z_STRVAL_P(ns), Z_STRLEN_P(ns));
|
||||
char *tmp2 = zend_str_tolower_dup(Z_STRVAL_P(ns), Z_STRLEN_P(ns));
|
||||
|
||||
if (Z_STRLEN_P(ns) != Z_STRLEN_P(CG(current_namespace)) + 1 + Z_STRLEN_P(name) ||
|
||||
memcmp(tmp, c_ns_name, Z_STRLEN_P(ns))) {
|
||||
memcmp(tmp2, c_ns_name, Z_STRLEN_P(ns))) {
|
||||
zend_error(E_COMPILE_ERROR, "Cannot use %s as %s because the name is already in use", Z_STRVAL_P(ns), Z_STRVAL_P(name));
|
||||
}
|
||||
efree(tmp);
|
||||
efree(tmp2);
|
||||
}
|
||||
efree(c_ns_name);
|
||||
} else if (zend_hash_find(CG(class_table), lcname, Z_STRLEN_P(name)+1, (void**)&pce) == SUCCESS &&
|
||||
@@ -5300,6 +5320,12 @@ void zend_do_end_namespace(TSRMLS_D) /* {{{ */
|
||||
efree(CG(current_import));
|
||||
CG(current_import) = NULL;
|
||||
}
|
||||
|
||||
if (CG(doc_comment)) {
|
||||
efree(CG(doc_comment));
|
||||
CG(doc_comment) = NULL;
|
||||
CG(doc_comment_len) = 0;
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -5348,7 +5374,7 @@ ZEND_API size_t zend_dirname(char *path, size_t len)
|
||||
if (len_adjust == len) {
|
||||
return len;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (len == 0) {
|
||||
|
||||
+2
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -39,6 +39,7 @@
|
||||
#define INC_BPC(op_array) if (op_array->fn_flags & ZEND_ACC_INTERACTIVE) { ((op_array)->backpatch_count++); }
|
||||
#define DEC_BPC(op_array) if (op_array->fn_flags & ZEND_ACC_INTERACTIVE) { ((op_array)->backpatch_count--); }
|
||||
#define HANDLE_INTERACTIVE() if (CG(active_op_array)->fn_flags & ZEND_ACC_INTERACTIVE) { execute_new_code(TSRMLS_C); }
|
||||
#define DO_TICKS() if (Z_LVAL(CG(declarables).ticks)) { zend_do_ticks(TSRMLS_C); }
|
||||
|
||||
#define RESET_DOC_COMMENT() \
|
||||
{ \
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -113,6 +113,8 @@ void zend_register_standard_constants(TSRMLS_D)
|
||||
|
||||
REGISTER_MAIN_LONG_CONSTANT("E_ALL", E_ALL, CONST_PERSISTENT | CONST_CS);
|
||||
|
||||
REGISTER_MAIN_LONG_CONSTANT("DEBUG_BACKTRACE_PROVIDE_OBJECT", DEBUG_BACKTRACE_PROVIDE_OBJECT, CONST_PERSISTENT | CONST_CS);
|
||||
REGISTER_MAIN_LONG_CONSTANT("DEBUG_BACKTRACE_IGNORE_ARGS", DEBUG_BACKTRACE_IGNORE_ARGS, CONST_PERSISTENT | CONST_CS);
|
||||
/* true/false constants */
|
||||
{
|
||||
zend_constant c;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -91,6 +91,9 @@ void zend_throw_exception_internal(zval *exception TSRMLS_DC) /* {{{ */
|
||||
}
|
||||
}
|
||||
if (!EG(current_execute_data)) {
|
||||
if(EG(exception)) {
|
||||
zend_exception_error(EG(exception), E_ERROR TSRMLS_CC);
|
||||
}
|
||||
zend_error(E_ERROR, "Exception thrown without a stack frame");
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+16
-4
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -536,10 +536,22 @@ static inline void zend_assign_to_object(znode *result, zval **object_ptr, zval
|
||||
(Z_TYPE_P(object) == IS_BOOL && Z_LVAL_P(object) == 0) ||
|
||||
(Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0)) {
|
||||
SEPARATE_ZVAL_IF_NOT_REF(object_ptr);
|
||||
zval_dtor(*object_ptr);
|
||||
object_init(*object_ptr);
|
||||
object = *object_ptr;
|
||||
Z_ADDREF_P(object);
|
||||
zend_error(E_STRICT, "Creating default object from empty value");
|
||||
if (Z_REFCOUNT_P(object) == 1) {
|
||||
/* object was removed by error handler, nothing to assign to */
|
||||
zval_ptr_dtor(&object);
|
||||
if (retval) {
|
||||
*retval = &EG(uninitialized_zval);
|
||||
PZVAL_LOCK(*retval);
|
||||
}
|
||||
FREE_OP(free_value);
|
||||
return;
|
||||
}
|
||||
Z_DELREF_P(object);
|
||||
zval_dtor(object);
|
||||
object_init(object);
|
||||
} else {
|
||||
zend_error(E_WARNING, "Attempt to assign property of non-object");
|
||||
if (!RETURN_VALUE_UNUSED(result)) {
|
||||
@@ -1067,7 +1079,7 @@ static void zend_fetch_dimension_address_read(temp_variable *result, zval **cont
|
||||
dim = &tmp;
|
||||
}
|
||||
if (result) {
|
||||
if (Z_LVAL_P(dim) < 0 || Z_STRLEN_P(container) <= Z_LVAL_P(dim)) {
|
||||
if ((Z_LVAL_P(dim) < 0 || Z_STRLEN_P(container) <= Z_LVAL_P(dim)) && type != BP_VAR_IS) {
|
||||
zend_error(E_NOTICE, "Uninitialized string offset: %ld", Z_LVAL_P(dim));
|
||||
}
|
||||
result->str_offset.str = container;
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+14
-10
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -296,7 +296,9 @@ void shutdown_executor(TSRMLS_D) /* {{{ */
|
||||
zend_hash_reverse_apply(EG(function_table), (apply_func_t) zend_cleanup_function_data TSRMLS_CC);
|
||||
}
|
||||
zend_hash_apply(EG(class_table), (apply_func_t) zend_cleanup_class_data TSRMLS_CC);
|
||||
} zend_end_try();
|
||||
|
||||
zend_try {
|
||||
zend_vm_stack_destroy(TSRMLS_C);
|
||||
|
||||
zend_objects_store_free_object_storage(&EG(objects_store) TSRMLS_CC);
|
||||
@@ -431,26 +433,28 @@ ZEND_API zend_bool zend_is_executing(TSRMLS_D) /* {{{ */
|
||||
|
||||
ZEND_API void _zval_ptr_dtor(zval **zval_ptr ZEND_FILE_LINE_DC) /* {{{ */
|
||||
{
|
||||
zval *zv = *zval_ptr;
|
||||
|
||||
#if DEBUG_ZEND>=2
|
||||
printf("Reducing refcount for %x (%x): %d->%d\n", *zval_ptr, zval_ptr, Z_REFCOUNT_PP(zval_ptr), Z_REFCOUNT_PP(zval_ptr) - 1);
|
||||
#endif
|
||||
Z_DELREF_PP(zval_ptr);
|
||||
if (Z_REFCOUNT_PP(zval_ptr) == 0) {
|
||||
Z_DELREF_P(zv);
|
||||
if (Z_REFCOUNT_P(zv) == 0) {
|
||||
TSRMLS_FETCH();
|
||||
|
||||
if (*zval_ptr != &EG(uninitialized_zval)) {
|
||||
GC_REMOVE_ZVAL_FROM_BUFFER(*zval_ptr);
|
||||
zval_dtor(*zval_ptr);
|
||||
efree_rel(*zval_ptr);
|
||||
if (zv != &EG(uninitialized_zval)) {
|
||||
GC_REMOVE_ZVAL_FROM_BUFFER(zv);
|
||||
zval_dtor(zv);
|
||||
efree_rel(zv);
|
||||
}
|
||||
} else {
|
||||
TSRMLS_FETCH();
|
||||
|
||||
if (Z_REFCOUNT_PP(zval_ptr) == 1) {
|
||||
Z_UNSET_ISREF_PP(zval_ptr);
|
||||
if (Z_REFCOUNT_P(zv) == 1) {
|
||||
Z_UNSET_ISREF_P(zv);
|
||||
}
|
||||
|
||||
GC_ZVAL_CHECK_POSSIBLE_ROOT(*zval_ptr);
|
||||
GC_ZVAL_CHECK_POSSIBLE_ROOT(zv);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+9
-11
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -545,9 +545,15 @@ ZEND_API void zend_hash_clean(HashTable *ht)
|
||||
|
||||
IS_CONSISTENT(ht);
|
||||
|
||||
SET_INCONSISTENT(HT_CLEANING);
|
||||
|
||||
p = ht->pListHead;
|
||||
|
||||
memset(ht->arBuckets, 0, ht->nTableSize*sizeof(Bucket *));
|
||||
ht->pListHead = NULL;
|
||||
ht->pListTail = NULL;
|
||||
ht->nNumOfElements = 0;
|
||||
ht->nNextFreeElement = 0;
|
||||
ht->pInternalPointer = NULL;
|
||||
|
||||
while (p != NULL) {
|
||||
q = p;
|
||||
p = p->pListNext;
|
||||
@@ -559,14 +565,6 @@ ZEND_API void zend_hash_clean(HashTable *ht)
|
||||
}
|
||||
pefree(q, ht->persistent);
|
||||
}
|
||||
memset(ht->arBuckets, 0, ht->nTableSize*sizeof(Bucket *));
|
||||
ht->pListHead = NULL;
|
||||
ht->pListTail = NULL;
|
||||
ht->nNumOfElements = 0;
|
||||
ht->nNextFreeElement = 0;
|
||||
ht->pInternalPointer = NULL;
|
||||
|
||||
SET_INCONSISTENT(HT_OK);
|
||||
}
|
||||
|
||||
/* This function is used by the various apply() functions.
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -211,7 +211,7 @@ inner_statement:
|
||||
|
||||
|
||||
statement:
|
||||
unticked_statement { zend_do_ticks(TSRMLS_C); }
|
||||
unticked_statement { DO_TICKS(); }
|
||||
| T_STRING ':' { zend_do_label(&$1 TSRMLS_CC); }
|
||||
;
|
||||
|
||||
@@ -291,11 +291,11 @@ unset_variable:
|
||||
;
|
||||
|
||||
function_declaration_statement:
|
||||
unticked_function_declaration_statement { zend_do_ticks(TSRMLS_C); }
|
||||
unticked_function_declaration_statement { DO_TICKS(); }
|
||||
;
|
||||
|
||||
class_declaration_statement:
|
||||
unticked_class_declaration_statement { zend_do_ticks(TSRMLS_C); }
|
||||
unticked_class_declaration_statement { DO_TICKS(); }
|
||||
;
|
||||
|
||||
|
||||
|
||||
+344
-334
File diff suppressed because it is too large.
Load diff
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
| Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
@@ -227,6 +227,12 @@ ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state TSRMLS_DC)
|
||||
SCNG(script_encoding) = lex_state->script_encoding;
|
||||
SCNG(internal_encoding) = lex_state->internal_encoding;
|
||||
#endif /* ZEND_MULTIBYTE */
|
||||
|
||||
if (CG(heredoc)) {
|
||||
efree(CG(heredoc));
|
||||
CG(heredoc) = NULL;
|
||||
CG(heredoc_len) = 0;
|
||||
}
|
||||
}
|
||||
|
||||
ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle TSRMLS_DC)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Generated by re2c 0.13.5 on Tue Jun 29 08:18:52 2010 */
|
||||
/* Generated by re2c 0.13.5 on Mon Jan 3 05:56:03 2011 */
|
||||
#line 3 "Zend/zend_language_scanner_defs.h"
|
||||
|
||||
enum YYCONDTYPE {
|
||||
|
||||
Loaded 100 of 1566 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user