mirror of
https://github.com/bdnugget/php-src.git
synced 2026-11-10 18:50:50 +00:00
Compare commits
289
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
049f993190 | ||
|
|
3110bc10f5 | ||
|
|
be50c2fa85 | ||
|
|
484c11a541 | ||
|
|
59c36a7e17 | ||
|
|
dab205cb9a | ||
|
|
5934bff913 | ||
|
|
1da28c55c4 | ||
|
|
0eb262eacb | ||
|
|
4201f5bcfd | ||
|
|
d4dee4a614 | ||
|
|
aaf00ae0a9 | ||
|
|
cbe60003f1 | ||
|
|
d6d4f2a9b3 | ||
|
|
ffd94f9bf8 | ||
|
|
958fdc997c | ||
|
|
b73151845f | ||
|
|
24d5adbd5a | ||
|
|
f166ea9c09 | ||
|
|
32e3d7b99e | ||
|
|
39d1818bd3 | ||
|
|
3b9ba7b6bd | ||
|
|
6ed242dfc8 | ||
|
|
8b57a5bca0 | ||
|
|
2873316d1d | ||
|
|
40f2668230 | ||
|
|
26656684ea | ||
|
|
8e5b9532da | ||
|
|
2b07102897 | ||
|
|
cf084416dd | ||
|
|
578049fdb6 | ||
|
|
ee9e32caca | ||
|
|
06202f0feb | ||
|
|
2868ff84df | ||
|
|
2b7d283cc5 | ||
|
|
34b19387c2 | ||
|
|
776bef8447 | ||
|
|
fee6c812c4 | ||
|
|
7e0feb8856 | ||
|
|
5a7459a082 | ||
|
|
269d160159 | ||
|
|
3ad116b7bd | ||
|
|
b75fd81563 | ||
|
|
38be3c4ac4 | ||
|
|
f5c0754f6e | ||
|
|
8fdef981ef | ||
|
|
d773a92f3c | ||
|
|
702ef27364 | ||
|
|
50a867eb07 | ||
|
|
0c54397879 | ||
|
|
8832c46607 | ||
|
|
de47d4792f | ||
|
|
092d0922ea | ||
|
|
0e097f2c96 | ||
|
|
61f5af6e05 | ||
|
|
1ed08f9877 | ||
|
|
dba5a798a2 | ||
|
|
c94d091889 | ||
|
|
4615fcf24d | ||
|
|
85021602ba | ||
|
|
a5206bc690 | ||
|
|
3bc5c9f118 | ||
|
|
3dbe8dd16f | ||
|
|
e704e1e8c2 | ||
|
|
c718fd16a1 | ||
|
|
1c1df0d937 | ||
|
|
0bbb545c77 | ||
|
|
89e4760dcc | ||
|
|
df615f47bd | ||
|
|
d36e793c93 | ||
|
|
c6720e2f45 | ||
|
|
3be6810385 | ||
|
|
ba9df1cff6 | ||
|
|
ca0bcf535c | ||
|
|
c842e1ac53 | ||
|
|
bc7d4dc523 | ||
|
|
21dbd2ffcd | ||
|
|
91c7460c53 | ||
|
|
c3be49e07d | ||
|
|
1f736085f1 | ||
|
|
d88ef8d7e1 | ||
|
|
e8af216ce5 | ||
|
|
dbfa0140ae | ||
|
|
ba50b27284 | ||
|
|
f5358c0e23 | ||
|
|
98422cfa3d | ||
|
|
8a3e2a6b14 | ||
|
|
164167f3da | ||
|
|
6eb4daabeb | ||
|
|
68c500421c | ||
|
|
7c2031bfca | ||
|
|
fc169d2133 | ||
|
|
d8ccffa79a | ||
|
|
e78e839e53 | ||
|
|
528aa540b4 | ||
|
|
548798818b | ||
|
|
55d92413b9 | ||
|
|
5812f7a8d3 | ||
|
|
628a52d365 | ||
|
|
80191eebec | ||
|
|
cd66aad141 | ||
|
|
c1d98588a2 | ||
|
|
d23d4fd61b | ||
|
|
be0758b75a | ||
|
|
37b0ad5537 | ||
|
|
cfa885830a | ||
|
|
5262bd9ea3 | ||
|
|
a308000ff2 | ||
|
|
a2cd2965d7 | ||
|
|
7ea44da104 | ||
|
|
c32e53b641 | ||
|
|
e305e8fb7a | ||
|
|
dfadda3d09 | ||
|
|
7bf2947016 | ||
|
|
6336c4f629 | ||
|
|
a3286a8ee4 | ||
|
|
bba09a53f4 | ||
|
|
c6e8c2bc9f | ||
|
|
591e811a35 | ||
|
|
f361caa5c0 | ||
|
|
bc410c2609 | ||
|
|
d9de0f8683 | ||
|
|
26eb6c5bab | ||
|
|
741efa7807 | ||
|
|
230e505fd8 | ||
|
|
63c0ecc445 | ||
|
|
e6aea3dc78 | ||
|
|
83d51baf83 | ||
|
|
123b1d79eb | ||
|
|
6c90612d13 | ||
|
|
59d413ceb8 | ||
|
|
27856f64c3 | ||
|
|
938f256ed9 | ||
|
|
14be7dcf8e | ||
|
|
51ea2cfbe1 | ||
|
|
005205714b | ||
|
|
15a71fe045 | ||
|
|
36b27f2ba5 | ||
|
|
24b1bb0abd | ||
|
|
211dacd7b5 | ||
|
|
10dc1950f7 | ||
|
|
f0a42d9fe4 | ||
|
|
f6e8ce8121 | ||
|
|
fb1c573a29 | ||
|
|
9eb6f86765 | ||
|
|
503df277ab | ||
|
|
98eee90734 | ||
|
|
d3146889ab | ||
|
|
502cfddf28 | ||
|
|
177cdcf313 | ||
|
|
bc59289b7a | ||
|
|
6b637ac589 | ||
|
|
eaeccc1d99 | ||
|
|
7d3c057bd1 | ||
|
|
3c4c9a23bc | ||
|
|
d2047503cb | ||
|
|
5e9f7f619e | ||
|
|
578ba71b3b | ||
|
|
8ad4de887f | ||
|
|
b6b0289f5e | ||
|
|
e763a1cdc7 | ||
|
|
9d59beb8ba | ||
|
|
0fbb9f343f | ||
|
|
298db6fc92 | ||
|
|
9fbf13a496 | ||
|
|
f600785f65 | ||
|
|
9e47f868d3 | ||
|
|
b53fb886a4 | ||
|
|
6125ce9d33 | ||
|
|
ad7ed6fe21 | ||
|
|
787e3a1ee4 | ||
|
|
9839d3a953 | ||
|
|
67b99b698f | ||
|
|
e19bf29b53 | ||
|
|
45ac5edbd9 | ||
|
|
53fe84bfcc | ||
|
|
68e27b0763 | ||
|
|
9c79de4d62 | ||
|
|
22c487616f | ||
|
|
7bc31238b4 | ||
|
|
8e3260376c | ||
|
|
8ad71bc1d2 | ||
|
|
c05fcc4687 | ||
|
|
0b5825d0e9 | ||
|
|
75d0ba5179 | ||
|
|
fadcfc8149 | ||
|
|
7d06a5c89f | ||
|
|
9138966c67 | ||
|
|
968c8fc0d5 | ||
|
|
37acebcc8c | ||
|
|
4d31ee9043 | ||
|
|
5efbcd1882 | ||
|
|
a7815e63bd | ||
|
|
d37658be6c | ||
|
|
1758525df9 | ||
|
|
9fca585488 | ||
|
|
781521e112 | ||
|
|
a645af4456 | ||
|
|
b07b526b95 | ||
|
|
eca1623f1b | ||
|
|
b2dfcb30eb | ||
|
|
5b497797f2 | ||
|
|
1cb2079d6c | ||
|
|
0a3ea6091c | ||
|
|
9f00e26008 | ||
|
|
c9a14b3aee | ||
|
|
a10ef3d5cc | ||
|
|
58dd892156 | ||
|
|
eead6bf97a | ||
|
|
a2c9ba78dd | ||
|
|
25d40602cb | ||
|
|
f10fd89f99 | ||
|
|
34ed75fab7 | ||
|
|
314bef5d03 | ||
|
|
e986f71527 | ||
|
|
1d781fbdb1 | ||
|
|
5ce28090e0 | ||
|
|
44b3bc847b | ||
|
|
f588a02463 | ||
|
|
0b71ae7a15 | ||
|
|
88ec44dfe3 | ||
|
|
5d85d967bd | ||
|
|
ffa4d48e70 | ||
|
|
f508734e2f | ||
|
|
ede8cee9e6 | ||
|
|
6f395736e2 | ||
|
|
f95063647c | ||
|
|
2198d38cbc | ||
|
|
3d55910f35 | ||
|
|
e02c41fc72 | ||
|
|
7027a1643f | ||
|
|
65d4bd0311 | ||
|
|
ae6d877f54 | ||
|
|
2f444640b4 | ||
|
|
7240d99838 | ||
|
|
e2afa00b4c | ||
|
|
26473523b0 | ||
|
|
877e0b04bc | ||
|
|
7751ae59ae | ||
|
|
9071ff5c87 | ||
|
|
8eee20d876 | ||
|
|
80c3b078b8 | ||
|
|
85c243ef66 | ||
|
|
aa143515d6 | ||
|
|
bb1814b5c3 | ||
|
|
925d969f9e | ||
|
|
4e85dd0346 | ||
|
|
3c2b087b3e | ||
|
|
5f7707cc8a | ||
|
|
53d8775015 | ||
|
|
d82805f097 | ||
|
|
b9b06c4bdf | ||
|
|
9891f11f84 | ||
|
|
d1f43b1a58 | ||
|
|
f955cff54c | ||
|
|
aad4544e95 | ||
|
|
c3177f8279 | ||
|
|
7778106f40 | ||
|
|
c33ca443ee | ||
|
|
8bfe748fb0 | ||
|
|
200d526a9c | ||
|
|
547fee9cd4 | ||
|
|
999fe36d40 | ||
|
|
5e2751e7ff | ||
|
|
5acb8381b2 | ||
|
|
fd993b1045 | ||
|
|
fb09021432 | ||
|
|
b9b2ae703c | ||
|
|
49702ad7fb | ||
|
|
816758eda2 | ||
|
|
bf1c1d07db | ||
|
|
397f5cb687 | ||
|
|
f8ff4c4918 | ||
|
|
a55af1e271 | ||
|
|
677cd85cb7 | ||
|
|
23e97b0222 | ||
|
|
f63a0fef6b | ||
|
|
d432bdb4ab | ||
|
|
d3d23e0cb8 | ||
|
|
787bf7eaf7 | ||
|
|
62098a10aa | ||
|
|
b497b6edf9 | ||
|
|
c2bfdf3712 | ||
|
|
fee21a45df | ||
|
|
c8eccf8451 | ||
|
|
30f121f9bc | ||
|
|
d1fc9b425f | ||
|
|
74124de048 | ||
|
|
9d9873b3b5 |
No files matched your search
+1
-2
@@ -18,13 +18,12 @@ clone_depth: 64
|
||||
|
||||
cache:
|
||||
- c:\build-cache
|
||||
- c:\build-cache\sdk -> .appveyor.yml
|
||||
|
||||
environment:
|
||||
PHP_BUILD_CACHE_BASE_DIR: c:\build-cache
|
||||
PHP_BUILD_OBJ_DIR: c:\obj
|
||||
PHP_BUILD_CACHE_SDK_DIR: c:\build-cache\sdk
|
||||
PHP_BUILD_SDK_BRANCH: php-sdk-2.0.11
|
||||
PHP_BUILD_SDK_BRANCH: php-sdk-2.0.13
|
||||
# ext and env setup for tests
|
||||
#MYSQL_TEST_PASSWD: Password12!
|
||||
#MYSQL_TEST_USER: root
|
||||
|
||||
+25
-6
@@ -1,16 +1,35 @@
|
||||
; http://editorconfig.org/
|
||||
# http://editorconfig.org/
|
||||
|
||||
root = true
|
||||
|
||||
[*.{c,h}]
|
||||
charset = UTF-8
|
||||
end_of_line = LF
|
||||
[*.{c,h,awk,w32,bat,mk,frag}]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 4
|
||||
indent_style = tab
|
||||
insert_final_newline = true
|
||||
tab_width = 4
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.yml]
|
||||
[*.{php,phpt}]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.{yml,m4,sh}]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_style = space
|
||||
trim_trailing_whitespace = false
|
||||
insert_final_newline = true
|
||||
@@ -1,3 +1,4 @@
|
||||
dist: trusty
|
||||
language: c
|
||||
sudo: false
|
||||
addons:
|
||||
|
||||
@@ -1,6 +1,108 @@
|
||||
PHP NEWS
|
||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
?? ??? ????, PHP 7.1.11
|
||||
07 Dec 2017, PHP 7.1.13RC1
|
||||
|
||||
- Core:
|
||||
. Fixed bug #75573 (Segmentation fault in 7.1.12 and 7.0.26). (Laruence)
|
||||
. Fixed bug #75384 (PHP seems incompatible with OneDrive files on demand).
|
||||
(Anatol)
|
||||
. Fixed bug #74862 (Unable to clone instance when private __clone defined).
|
||||
(Daniel Ciochiu)
|
||||
. Fixed bug #75074 (php-process crash when is_file() is used with strings
|
||||
longer 260 chars). (Anatol)
|
||||
|
||||
- CLI Server:
|
||||
. Fixed bug #60471 (Random "Invalid request (unexpected EOF)" using a router
|
||||
script). (SammyK)
|
||||
. Fixed bug #73830 (Directory does not exist). (Anatol)
|
||||
|
||||
- FPM:
|
||||
. Fixed bug #64938 (libxml_disable_entity_loader setting is shared between
|
||||
requests). (Remi)
|
||||
|
||||
- Opcache:
|
||||
. Fixed bug #75608 ("Narrowing occurred during type inference" error).
|
||||
(Laruence, Dmitry)
|
||||
. Fixed bug #75570 ("Narrowing occurred during type inference" error).
|
||||
(Dmitry)
|
||||
|
||||
- PCRE:
|
||||
. Fixed bug #74183 (preg_last_error not returning error code after error).
|
||||
(Andrew Nester)
|
||||
|
||||
- Standard:
|
||||
. Fixed bug #75511 (fread not free unused buffer). (Laruence)
|
||||
. Fixed bug #75514 (mt_rand returns value outside [$min,$max]+ on 32-bit)
|
||||
(Remi)
|
||||
. Fixed bug #75535 (Inappropriately parsing HTTP response leads to PHP
|
||||
segment fault). (Nikita)
|
||||
. Fixed bug #75409 (accept EFAULT in addition to ENOSYS as indicator
|
||||
that getrandom() is missing). (sarciszewski)
|
||||
. Fixed bug #73124 (php_ini_scanned_files() not reporting correctly).
|
||||
(John Stevenson)
|
||||
. Fixed bug #75574 (putenv does not work properly if parameter contains
|
||||
non-ASCII unicode character). (Anatol)
|
||||
|
||||
- Zip:
|
||||
. Fixed bug #75540 (Segfault with libzip 1.3.1). (Remi)
|
||||
|
||||
23 Nov 2017, PHP 7.1.12
|
||||
|
||||
- Core:
|
||||
. Fixed bug #75420 (Crash when modifing property name in __isset for
|
||||
BP_VAR_IS). (Laruence)
|
||||
. Fixed bug #75368 (mmap/munmap trashing on unlucky allocations). (Nikita,
|
||||
Dmitry)
|
||||
|
||||
- CLI:
|
||||
. Fixed bug #75287 (Builtin webserver crash after chdir in a shutdown
|
||||
function). (Laruence)
|
||||
|
||||
- Enchant:
|
||||
. Fixed bug #53070 (enchant_broker_get_path crashes if no path is set). (jelle
|
||||
van der Waa, cmb)
|
||||
. Fixed bug #75365 (Enchant still reports version 1.1.0). (cmb)
|
||||
|
||||
- Exif:
|
||||
. Fixed bug #75301 (Exif extension has built in revision version). (Peter
|
||||
Kokot)
|
||||
|
||||
- GD:
|
||||
. Fixed bug #65148 (imagerotate may alter image dimensions). (cmb)
|
||||
. Fixed bug #75437 (Wrong reflection on imagewebp). (Fabien Villepinte)
|
||||
|
||||
- intl:
|
||||
. Fixed bug #75317 (UConverter::setDestinationEncoding changes source instead
|
||||
of destination). (andrewnester)
|
||||
|
||||
- interbase:
|
||||
. Fixed bug #75453 (Incorrect reflection for ibase_[p]connect). (villfa)
|
||||
|
||||
- Mysqli:
|
||||
. Fixed bug #75434 (Wrong reflection for mysqli_fetch_all function). (Fabien
|
||||
Villepinte)
|
||||
|
||||
- OCI8:
|
||||
. Fixed valgrind issue. (Tianfang Yang)
|
||||
|
||||
- OpenSSL:
|
||||
. Fixed bug #75363 (openssl_x509_parse leaks memory). (Bob, Jakub Zelenka)
|
||||
. Fixed bug #75307 (Wrong reflection for openssl_open function). (villfa)
|
||||
|
||||
- Opcache:
|
||||
. Fixed bug #75373 (Warning Internal error: wrong size calculation). (Laruence, Dmitry)
|
||||
|
||||
- PGSQL:
|
||||
. Fixed bug #75419 (Default link incorrectly cleared/linked by pg_close()). (Sara)
|
||||
|
||||
- SOAP:
|
||||
. Fixed bug #75464 (Wrong reflection on SoapClient::__setSoapHeaders). (villfa)
|
||||
|
||||
- Zlib:
|
||||
. Fixed bug #75299 (Wrong reflection on inflate_init and inflate_add). (Fabien
|
||||
Villepinte)
|
||||
|
||||
26 Oct 2017, PHP 7.1.11
|
||||
|
||||
- Core:
|
||||
. Fixed bug #75241 (Null pointer dereference in zend_mm_alloc_small()).
|
||||
@@ -17,6 +119,9 @@ PHP NEWS
|
||||
. Fixed bug #75311 (error: 'zend_hash_key' has no member named 'arKey' in
|
||||
apache2handler). (mcarbonneaux)
|
||||
|
||||
- Date:
|
||||
. Fixed bug #75055 (Out-Of-Bounds Read in timelib_meridian()). (Derick)
|
||||
|
||||
- Hash:
|
||||
. Fixed bug #75303 (sha3 hangs on bigendian). (Remi)
|
||||
|
||||
@@ -29,6 +134,9 @@ PHP NEWS
|
||||
only litespeed SAPI). (petk)
|
||||
. Fixed bug #75251 (Missing program prefix and suffix). (petk)
|
||||
|
||||
- mcrypt:
|
||||
. Fixed bug #72535 (arcfour encryption stream filter crashes php). (Leigh)
|
||||
|
||||
- MySQLi:
|
||||
. Fixed bug #75018 (Data corruption when reading fields of bit type). (Anatol)
|
||||
|
||||
@@ -38,6 +146,9 @@ PHP NEWS
|
||||
- Opcache
|
||||
. Fixed bug #75255 (Request hangs and not finish). (Dmitry)
|
||||
|
||||
- PCRE:
|
||||
. Fixed bug #75207 (applied upstream patch for CVE-2016-1283). (Anatol)
|
||||
|
||||
- PDO_mysql:
|
||||
. Fixed bug #75177 (Type 'bit' is fetched as unexpected string). (Anatol)
|
||||
|
||||
@@ -96,6 +207,7 @@ PHP NEWS
|
||||
. Fixed bug #74954 (null deref and segfault in zend_generator_resume()). (Bob)
|
||||
. Fixed bug #74725 (html_errors=1 breaks unhandled exceptions). (Andrea)
|
||||
. Fixed bug #75063 (Main CWD initialized with wrong codepage). (Anatol)
|
||||
. Fixed bug #75349 (NAN comparison). (Sara)
|
||||
|
||||
- cURL:
|
||||
. Fixed bug #74125 (Fixed finding CURL on systems with multiarch support).
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
--TEST--
|
||||
Bug #74862 (Unable to clone instance when private __clone defined)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class a {
|
||||
private function __clone()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private function __construct()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public static function getInstance()
|
||||
{
|
||||
return new static();
|
||||
}
|
||||
|
||||
public function cloneIt()
|
||||
{
|
||||
$a = clone $this;
|
||||
|
||||
return $a;
|
||||
}
|
||||
}
|
||||
|
||||
class c extends a {
|
||||
|
||||
}
|
||||
|
||||
// private constructor
|
||||
$d = c::getInstance();
|
||||
|
||||
// private clone
|
||||
$e = $d->cloneIt();
|
||||
var_dump($e);
|
||||
?>
|
||||
--EXPECT--
|
||||
object(c)#2 (0) {
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
--TEST--
|
||||
Bug #74862 (Unable to clone instance when private __clone defined in a child class)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class main {
|
||||
}
|
||||
|
||||
class a extends main {
|
||||
private function __clone()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private function __construct()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public static function getInstance()
|
||||
{
|
||||
return new static();
|
||||
}
|
||||
|
||||
public function cloneIt()
|
||||
{
|
||||
$a = clone $this;
|
||||
|
||||
return $a;
|
||||
}
|
||||
}
|
||||
|
||||
class c extends a {
|
||||
|
||||
}
|
||||
|
||||
// private constructor
|
||||
$d = c::getInstance();
|
||||
|
||||
// private clone
|
||||
$e = $d->cloneIt();
|
||||
var_dump($e);
|
||||
?>
|
||||
--EXPECT--
|
||||
object(c)#2 (0) {
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
--TEST--
|
||||
Bug #75420.1 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __isset($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function __get($x) { var_dump($x); return 42; }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump($obj->$name ?? 12);
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(3) "foo"
|
||||
int(42)
|
||||
int(24)
|
||||
@@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
Bug #75420.10 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function offsetGet($x) { var_dump($x); return 42; }
|
||||
public function offsetSet($x, $y) { }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$name = str_repeat($name, 2);
|
||||
var_dump($obj[$name] ?? 12);
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(6) "foofoo"
|
||||
int(42)
|
||||
int(24)
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #75420.11 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function offsetGet($x) { var_dump($x); return 42; }
|
||||
public function offsetSet($x, $y) { }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump(empty($obj[$name]));
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(3) "foo"
|
||||
bool(false)
|
||||
int(24)
|
||||
@@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
Bug #75420.12 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function offsetGet($x) { var_dump($x); return 42; }
|
||||
public function offsetSet($x, $y) { }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$name = str_repeat($name, 2);
|
||||
var_dump(empty($obj[$name]));
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(6) "foofoo"
|
||||
bool(false)
|
||||
int(24)
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #75420.13 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { $GLOBALS["obj"] = 24; return true; }
|
||||
public function offsetGet($x) { var_dump($x); return 42; }
|
||||
public function offsetSet($x, $y) { }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump($obj[$name] ?? 12);
|
||||
var_dump($obj);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(3) "foo"
|
||||
int(42)
|
||||
int(24)
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #75420.14 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { $GLOBALS["obj"] = 24; return true; }
|
||||
public function offsetGet($x) { var_dump($x); return 42; }
|
||||
public function offsetSet($x, $y) { }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump(empty($obj[$name]));
|
||||
var_dump($obj);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(3) "foo"
|
||||
bool(false)
|
||||
int(24)
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #75420.15 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { }
|
||||
public function offsetGet($x) { }
|
||||
public function offsetSet($x, $y) { $GLOBALS["name"] = 24; var_dump($x); }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$name = str_repeat($name, 2);
|
||||
$obj[$name] = 1;
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(6) "foofoo"
|
||||
int(24)
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #75420.16 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { }
|
||||
public function offsetGet($x) { }
|
||||
public function offsetSet($x, $y) { $GLOBALS["obj"] = 24; var_dump($this); }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$obj[$name] = 1;
|
||||
var_dump($obj);
|
||||
?>
|
||||
--EXPECT--
|
||||
object(Test)#1 (0) {
|
||||
}
|
||||
int(24)
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #75420.2 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __isset($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function __get($x) { var_dump($x); return 42; }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$name = str_repeat($name, 2);
|
||||
var_dump($obj->$name ?? 12);
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(6) "foofoo"
|
||||
int(42)
|
||||
int(24)
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
--TEST--
|
||||
Bug #75420.3 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __isset($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function __get($x) { var_dump($x); return 42; }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump(empty($obj->$name));
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(3) "foo"
|
||||
bool(false)
|
||||
int(24)
|
||||
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Bug #75420.4 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __isset($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function __get($x) { var_dump($x); return 42; }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$name = str_repeat($name, 2);
|
||||
var_dump(empty($obj->$name));
|
||||
?>
|
||||
--EXPECT--
|
||||
string(6) "foofoo"
|
||||
bool(false)
|
||||
@@ -0,0 +1,19 @@
|
||||
--TEST--
|
||||
Bug #75420.5 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __isset($x) { $GLOBALS["obj"] = 24; return true; }
|
||||
public function __get($x) { var_dump($this); return 42; }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump($obj->$name ?? 12);
|
||||
var_dump($obj);
|
||||
?>
|
||||
--EXPECT--
|
||||
object(Test)#1 (0) {
|
||||
}
|
||||
int(42)
|
||||
int(24)
|
||||
@@ -0,0 +1,19 @@
|
||||
--TEST--
|
||||
Bug #75420.6 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __isset($x) { $GLOBALS["obj"] = 24; return true; }
|
||||
public function __get($x) { var_dump($this); return 42; }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump(empty($obj->$name));
|
||||
var_dump($obj);
|
||||
?>
|
||||
--EXPECT--
|
||||
object(Test)#1 (0) {
|
||||
}
|
||||
bool(false)
|
||||
int(24)
|
||||
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Bug #75420.7 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __set($x,$v) { $GLOBALS["name"] = 24; var_dump($x); }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$name = str_repeat($name, 2);
|
||||
$obj->$name = 1;
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(6) "foofoo"
|
||||
int(24)
|
||||
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Bug #75420.8 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test {
|
||||
public function __set($x,$v) { $GLOBALS["obj"] = 24; var_dump($this); }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
$obj->$name = 1;
|
||||
var_dump($obj);
|
||||
?>
|
||||
--EXPECT--
|
||||
object(Test)#1 (0) {
|
||||
}
|
||||
int(24)
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #75420.9 (Indirect modification of magic method argument)
|
||||
--FILE--
|
||||
<?php
|
||||
class Test implements ArrayAccess {
|
||||
public function offsetExists($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function offsetGet($x) { var_dump($x); return 42; }
|
||||
public function offsetSet($x, $y) { }
|
||||
public function offsetUnset($x) { }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump($obj[$name] ?? 12);
|
||||
var_dump($name);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(3) "foo"
|
||||
int(42)
|
||||
int(24)
|
||||
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Bug #75420 (Crash when modifing property name in __isset for BP_VAR_IS)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class Test {
|
||||
public function __isset($x) { $GLOBALS["name"] = 24; return true; }
|
||||
public function __get($x) { var_dump($x); return 42; }
|
||||
}
|
||||
|
||||
$obj = new Test;
|
||||
$name = "foo";
|
||||
var_dump($obj->$name ?? 12);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(3) "foo"
|
||||
int(42)
|
||||
@@ -0,0 +1,64 @@
|
||||
--TEST--
|
||||
Bug #75573 (Segmentation fault in 7.1.12 and 7.0.26)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class A
|
||||
{
|
||||
var $_stdObject;
|
||||
function initialize($properties = FALSE) {
|
||||
$this->_stdObject = $properties ? (object) $properties : new stdClass();
|
||||
parent::initialize();
|
||||
}
|
||||
function &__get($property)
|
||||
{
|
||||
if (isset($this->_stdObject->{$property})) {
|
||||
$retval =& $this->_stdObject->{$property};
|
||||
return $retval;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
function &__set($property, $value)
|
||||
{
|
||||
return $this->_stdObject->{$property} = $value;
|
||||
}
|
||||
function __isset($property_name)
|
||||
{
|
||||
return isset($this->_stdObject->{$property_name});
|
||||
}
|
||||
}
|
||||
|
||||
class B extends A
|
||||
{
|
||||
function initialize($properties = array())
|
||||
{
|
||||
parent::initialize($properties);
|
||||
}
|
||||
function &__get($property)
|
||||
{
|
||||
if (isset($this->settings) && isset($this->settings[$property])) {
|
||||
$retval =& $this->settings[$property];
|
||||
return $retval;
|
||||
} else {
|
||||
return parent::__get($property);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$b = new B();
|
||||
$b->settings = [ "foo" => "bar", "name" => "abc" ];
|
||||
var_dump($b->name);
|
||||
var_dump($b->settings);
|
||||
?>
|
||||
--EXPECTF--
|
||||
Warning: Creating default object from empty value in %sbug75573.php on line %d
|
||||
|
||||
Notice: Only variable references should be returned by reference in %sbug75573.php on line %d
|
||||
string(3) "abc"
|
||||
array(2) {
|
||||
["foo"]=>
|
||||
string(3) "bar"
|
||||
["name"]=>
|
||||
string(3) "abc"
|
||||
}
|
||||
+19
-1
@@ -260,6 +260,8 @@ struct _zend_mm_heap {
|
||||
int peak_chunks_count; /* peak number of allocated chunks for current request */
|
||||
int cached_chunks_count; /* number of cached chunks */
|
||||
double avg_chunks_count; /* average number of chunks allocated per request */
|
||||
int last_chunks_delete_boundary; /* numer of chunks after last deletion */
|
||||
int last_chunks_delete_count; /* number of deletion over the last boundary */
|
||||
#if ZEND_MM_CUSTOM
|
||||
union {
|
||||
struct {
|
||||
@@ -1076,7 +1078,9 @@ static zend_always_inline void zend_mm_delete_chunk(zend_mm_heap *heap, zend_mm_
|
||||
chunk->next->prev = chunk->prev;
|
||||
chunk->prev->next = chunk->next;
|
||||
heap->chunks_count--;
|
||||
if (heap->chunks_count + heap->cached_chunks_count < heap->avg_chunks_count + 0.1) {
|
||||
if (heap->chunks_count + heap->cached_chunks_count < heap->avg_chunks_count + 0.1
|
||||
|| (heap->chunks_count == heap->last_chunks_delete_boundary
|
||||
&& heap->last_chunks_delete_count >= 4)) {
|
||||
/* delay deletion */
|
||||
heap->cached_chunks_count++;
|
||||
chunk->next = heap->cached_chunks;
|
||||
@@ -1085,6 +1089,14 @@ static zend_always_inline void zend_mm_delete_chunk(zend_mm_heap *heap, zend_mm_
|
||||
#if ZEND_MM_STAT || ZEND_MM_LIMIT
|
||||
heap->real_size -= ZEND_MM_CHUNK_SIZE;
|
||||
#endif
|
||||
if (!heap->cached_chunks) {
|
||||
if (heap->chunks_count != heap->last_chunks_delete_boundary) {
|
||||
heap->last_chunks_delete_boundary = heap->chunks_count;
|
||||
heap->last_chunks_delete_count = 0;
|
||||
} else {
|
||||
heap->last_chunks_delete_count++;
|
||||
}
|
||||
}
|
||||
if (!heap->cached_chunks || chunk->num > heap->cached_chunks->num) {
|
||||
zend_mm_chunk_free(heap, chunk, ZEND_MM_CHUNK_SIZE);
|
||||
} else {
|
||||
@@ -1819,6 +1831,8 @@ static zend_mm_heap *zend_mm_init(void)
|
||||
heap->peak_chunks_count = 1;
|
||||
heap->cached_chunks_count = 0;
|
||||
heap->avg_chunks_count = 1.0;
|
||||
heap->last_chunks_delete_boundary = 0;
|
||||
heap->last_chunks_delete_count = 0;
|
||||
#if ZEND_MM_STAT || ZEND_MM_LIMIT
|
||||
heap->real_size = ZEND_MM_CHUNK_SIZE;
|
||||
#endif
|
||||
@@ -2235,6 +2249,8 @@ void zend_mm_shutdown(zend_mm_heap *heap, int full, int silent)
|
||||
p->map[0] = ZEND_MM_LRUN(ZEND_MM_FIRST_PAGE);
|
||||
heap->chunks_count = 1;
|
||||
heap->peak_chunks_count = 1;
|
||||
heap->last_chunks_delete_boundary = 0;
|
||||
heap->last_chunks_delete_count = 0;
|
||||
#if ZEND_MM_STAT || ZEND_MM_LIMIT
|
||||
heap->real_size = ZEND_MM_CHUNK_SIZE;
|
||||
#endif
|
||||
@@ -2767,6 +2783,8 @@ ZEND_API zend_mm_heap *zend_mm_startup_ex(const zend_mm_handlers *handlers, void
|
||||
heap->peak_chunks_count = 1;
|
||||
heap->cached_chunks_count = 0;
|
||||
heap->avg_chunks_count = 1.0;
|
||||
heap->last_chunks_delete_boundary = 0;
|
||||
heap->last_chunks_delete_count = 0;
|
||||
#if ZEND_MM_STAT || ZEND_MM_LIMIT
|
||||
heap->real_size = ZEND_MM_CHUNK_SIZE;
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -6261,7 +6261,7 @@ void zend_compile_use(zend_ast *ast) /* {{{ */
|
||||
zend_string *ns_name = zend_string_alloc(ZSTR_LEN(current_ns) + 1 + ZSTR_LEN(new_name), 0);
|
||||
zend_str_tolower_copy(ZSTR_VAL(ns_name), ZSTR_VAL(current_ns), ZSTR_LEN(current_ns));
|
||||
ZSTR_VAL(ns_name)[ZSTR_LEN(current_ns)] = '\\';
|
||||
memcpy(ZSTR_VAL(ns_name) + ZSTR_LEN(current_ns) + 1, ZSTR_VAL(lookup_name), ZSTR_LEN(lookup_name));
|
||||
memcpy(ZSTR_VAL(ns_name) + ZSTR_LEN(current_ns) + 1, ZSTR_VAL(lookup_name), ZSTR_LEN(lookup_name) + 1);
|
||||
|
||||
zend_check_use_conflict(type, old_name, new_name, ns_name);
|
||||
|
||||
|
||||
@@ -53,8 +53,8 @@
|
||||
__asm__("mul %0, %2, %3\n" \
|
||||
"smulh %1, %2, %3\n" \
|
||||
"sub %1, %1, %0, asr #63\n" \
|
||||
: "=X"(__tmpvar), "=X"(usedval) \
|
||||
: "X"(a), "X"(b)); \
|
||||
: "=&r"(__tmpvar), "=&r"(usedval) \
|
||||
: "r"(a), "r"(b)); \
|
||||
if (usedval) (dval) = (double) (a) * (double) (b); \
|
||||
else (lval) = __tmpvar; \
|
||||
} while (0)
|
||||
|
||||
+64
-37
@@ -574,9 +574,10 @@ ZEND_API uint32_t *zend_get_property_guard(zend_object *zobj, zend_string *membe
|
||||
zval *zend_std_read_property(zval *object, zval *member, int type, void **cache_slot, zval *rv) /* {{{ */
|
||||
{
|
||||
zend_object *zobj;
|
||||
zval tmp_member;
|
||||
zval tmp_member, tmp_object;
|
||||
zval *retval;
|
||||
uint32_t property_offset;
|
||||
uint32_t *guard = NULL;
|
||||
|
||||
zobj = Z_OBJ_P(object);
|
||||
|
||||
@@ -609,12 +610,18 @@ zval *zend_std_read_property(zval *object, zval *member, int type, void **cache_
|
||||
goto exit;
|
||||
}
|
||||
|
||||
ZVAL_UNDEF(&tmp_object);
|
||||
|
||||
/* magic isset */
|
||||
if ((type == BP_VAR_IS) && zobj->ce->__isset) {
|
||||
zval tmp_object, tmp_result;
|
||||
uint32_t *guard = zend_get_property_guard(zobj, Z_STR_P(member));
|
||||
zval tmp_result;
|
||||
guard = zend_get_property_guard(zobj, Z_STR_P(member));
|
||||
|
||||
if (!((*guard) & IN_ISSET)) {
|
||||
if (Z_TYPE(tmp_member) == IS_UNDEF) {
|
||||
ZVAL_COPY(&tmp_member, member);
|
||||
member = &tmp_member;
|
||||
}
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
ZVAL_UNDEF(&tmp_result);
|
||||
|
||||
@@ -629,19 +636,20 @@ zval *zend_std_read_property(zval *object, zval *member, int type, void **cache_
|
||||
goto exit;
|
||||
}
|
||||
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
zval_ptr_dtor(&tmp_result);
|
||||
}
|
||||
}
|
||||
|
||||
/* magic get */
|
||||
if (zobj->ce->__get) {
|
||||
uint32_t *guard = zend_get_property_guard(zobj, Z_STR_P(member));
|
||||
if (guard == NULL) {
|
||||
guard = zend_get_property_guard(zobj, Z_STR_P(member));
|
||||
}
|
||||
if (!((*guard) & IN_GET)) {
|
||||
zval tmp_object;
|
||||
|
||||
/* have getter - try with it! */
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
if (Z_TYPE(tmp_object) == IS_UNDEF) {
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
}
|
||||
*guard |= IN_GET; /* prevent circular getting */
|
||||
zend_std_call_getter(&tmp_object, member, rv);
|
||||
*guard &= ~IN_GET;
|
||||
@@ -660,14 +668,16 @@ zval *zend_std_read_property(zval *object, zval *member, int type, void **cache_
|
||||
}
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
goto exit;
|
||||
} else {
|
||||
if (Z_STRVAL_P(member)[0] == '\0' && Z_STRLEN_P(member) != 0) {
|
||||
zend_throw_error(NULL, "Cannot access property started with '\\0'");
|
||||
retval = &EG(uninitialized_zval);
|
||||
goto exit;
|
||||
}
|
||||
} else if (Z_STRVAL_P(member)[0] == '\0' && Z_STRLEN_P(member) != 0) {
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
zend_throw_error(NULL, "Cannot access property started with '\\0'");
|
||||
retval = &EG(uninitialized_zval);
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
|
||||
if ((type != BP_VAR_IS)) {
|
||||
zend_error(E_NOTICE,"Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), Z_STRVAL_P(member));
|
||||
}
|
||||
@@ -778,34 +788,38 @@ exit:
|
||||
zval *zend_std_read_dimension(zval *object, zval *offset, int type, zval *rv) /* {{{ */
|
||||
{
|
||||
zend_class_entry *ce = Z_OBJCE_P(object);
|
||||
zval tmp;
|
||||
zval tmp_offset, tmp_object;
|
||||
|
||||
if (EXPECTED(instanceof_function_ex(ce, zend_ce_arrayaccess, 1) != 0)) {
|
||||
if (offset == NULL) {
|
||||
/* [] construct */
|
||||
ZVAL_NULL(&tmp);
|
||||
offset = &tmp;
|
||||
ZVAL_NULL(&tmp_offset);
|
||||
} else {
|
||||
SEPARATE_ARG_IF_REF(offset);
|
||||
ZVAL_DEREF(offset);
|
||||
ZVAL_COPY(&tmp_offset, offset);
|
||||
}
|
||||
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
if (type == BP_VAR_IS) {
|
||||
zend_call_method_with_1_params(object, ce, NULL, "offsetexists", rv, offset);
|
||||
zend_call_method_with_1_params(&tmp_object, ce, NULL, "offsetexists", rv, &tmp_offset);
|
||||
if (UNEXPECTED(Z_ISUNDEF_P(rv))) {
|
||||
zval_ptr_dtor(offset);
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
zval_ptr_dtor(&tmp_offset);
|
||||
return NULL;
|
||||
}
|
||||
if (!i_zend_is_true(rv)) {
|
||||
zval_ptr_dtor(offset);
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
zval_ptr_dtor(&tmp_offset);
|
||||
zval_ptr_dtor(rv);
|
||||
return &EG(uninitialized_zval);
|
||||
}
|
||||
zval_ptr_dtor(rv);
|
||||
}
|
||||
|
||||
zend_call_method_with_1_params(object, ce, NULL, "offsetget", rv, offset);
|
||||
zend_call_method_with_1_params(&tmp_object, ce, NULL, "offsetget", rv, &tmp_offset);
|
||||
|
||||
zval_ptr_dtor(offset);
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
zval_ptr_dtor(&tmp_offset);
|
||||
|
||||
if (UNEXPECTED(Z_TYPE_P(rv) == IS_UNDEF)) {
|
||||
if (UNEXPECTED(!EG(exception))) {
|
||||
@@ -824,17 +838,19 @@ zval *zend_std_read_dimension(zval *object, zval *offset, int type, zval *rv) /*
|
||||
static void zend_std_write_dimension(zval *object, zval *offset, zval *value) /* {{{ */
|
||||
{
|
||||
zend_class_entry *ce = Z_OBJCE_P(object);
|
||||
zval tmp;
|
||||
zval tmp_offset, tmp_object;
|
||||
|
||||
if (EXPECTED(instanceof_function_ex(ce, zend_ce_arrayaccess, 1) != 0)) {
|
||||
if (!offset) {
|
||||
ZVAL_NULL(&tmp);
|
||||
offset = &tmp;
|
||||
ZVAL_NULL(&tmp_offset);
|
||||
} else {
|
||||
SEPARATE_ARG_IF_REF(offset);
|
||||
ZVAL_DEREF(offset);
|
||||
ZVAL_COPY(&tmp_offset, offset);
|
||||
}
|
||||
zend_call_method_with_2_params(object, ce, NULL, "offsetset", NULL, offset, value);
|
||||
zval_ptr_dtor(offset);
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
zend_call_method_with_2_params(&tmp_object, ce, NULL, "offsetset", NULL, &tmp_offset, value);
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
zval_ptr_dtor(&tmp_offset);
|
||||
} else {
|
||||
zend_throw_error(NULL, "Cannot use object of type %s as array", ZSTR_VAL(ce->name));
|
||||
}
|
||||
@@ -844,17 +860,19 @@ static void zend_std_write_dimension(zval *object, zval *offset, zval *value) /*
|
||||
static int zend_std_has_dimension(zval *object, zval *offset, int check_empty) /* {{{ */
|
||||
{
|
||||
zend_class_entry *ce = Z_OBJCE_P(object);
|
||||
zval retval;
|
||||
zval retval, tmp_offset, tmp_object;
|
||||
int result;
|
||||
|
||||
if (EXPECTED(instanceof_function_ex(ce, zend_ce_arrayaccess, 1) != 0)) {
|
||||
SEPARATE_ARG_IF_REF(offset);
|
||||
zend_call_method_with_1_params(object, ce, NULL, "offsetexists", &retval, offset);
|
||||
ZVAL_DEREF(offset);
|
||||
ZVAL_COPY(&tmp_offset, offset);
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
zend_call_method_with_1_params(&tmp_object, ce, NULL, "offsetexists", &retval, &tmp_offset);
|
||||
if (EXPECTED(Z_TYPE(retval) != IS_UNDEF)) {
|
||||
result = i_zend_is_true(&retval);
|
||||
zval_ptr_dtor(&retval);
|
||||
if (check_empty && result && EXPECTED(!EG(exception))) {
|
||||
zend_call_method_with_1_params(object, ce, NULL, "offsetget", &retval, offset);
|
||||
zend_call_method_with_1_params(&tmp_object, ce, NULL, "offsetget", &retval, &tmp_offset);
|
||||
if (EXPECTED(Z_TYPE(retval) != IS_UNDEF)) {
|
||||
result = i_zend_is_true(&retval);
|
||||
zval_ptr_dtor(&retval);
|
||||
@@ -863,7 +881,8 @@ static int zend_std_has_dimension(zval *object, zval *offset, int check_empty) /
|
||||
} else {
|
||||
result = 0;
|
||||
}
|
||||
zval_ptr_dtor(offset);
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
zval_ptr_dtor(&tmp_offset);
|
||||
} else {
|
||||
zend_throw_error(NULL, "Cannot use object of type %s as array", ZSTR_VAL(ce->name));
|
||||
return 0;
|
||||
@@ -1020,11 +1039,15 @@ exit:
|
||||
static void zend_std_unset_dimension(zval *object, zval *offset) /* {{{ */
|
||||
{
|
||||
zend_class_entry *ce = Z_OBJCE_P(object);
|
||||
zval tmp_offset, tmp_object;
|
||||
|
||||
if (instanceof_function_ex(ce, zend_ce_arrayaccess, 1)) {
|
||||
SEPARATE_ARG_IF_REF(offset);
|
||||
zend_call_method_with_1_params(object, ce, NULL, "offsetunset", NULL, offset);
|
||||
zval_ptr_dtor(offset);
|
||||
ZVAL_DEREF(offset);
|
||||
ZVAL_COPY(&tmp_offset, offset);
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
zend_call_method_with_1_params(&tmp_object, ce, NULL, "offsetunset", NULL, &tmp_offset);
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
zval_ptr_dtor(&tmp_offset);
|
||||
} else {
|
||||
zend_throw_error(NULL, "Cannot use object of type %s as array", ZSTR_VAL(ce->name));
|
||||
}
|
||||
@@ -1578,6 +1601,10 @@ found:
|
||||
zval tmp_object;
|
||||
|
||||
/* have issetter - try with it! */
|
||||
if (Z_TYPE(tmp_member) == IS_UNDEF) {
|
||||
ZVAL_COPY(&tmp_member, member);
|
||||
member = &tmp_member;
|
||||
}
|
||||
ZVAL_COPY(&tmp_object, object);
|
||||
(*guard) |= IN_ISSET; /* prevent circular getting */
|
||||
zend_std_call_issetter(&tmp_object, member, &rv);
|
||||
|
||||
+19
-2
@@ -45,6 +45,19 @@
|
||||
# define IO_REPARSE_TAG_DEDUP 0x80000013
|
||||
# endif
|
||||
|
||||
# ifndef IO_REPARSE_TAG_CLOUD
|
||||
# define IO_REPARSE_TAG_CLOUD (0x9000001AL)
|
||||
# endif
|
||||
/* IO_REPARSE_TAG_CLOUD_1 through IO_REPARSE_TAG_CLOUD_F have values of 0x9000101AL
|
||||
to 0x9000F01AL, they can be checked against the mask. */
|
||||
#ifndef IO_REPARSE_TAG_CLOUD_MASK
|
||||
#define IO_REPARSE_TAG_CLOUD_MASK (0x0000F000L)
|
||||
#endif
|
||||
|
||||
#ifndef IO_REPARSE_TAG_ONEDRIVE
|
||||
#define IO_REPARSE_TAG_ONEDRIVE (0x80000021L)
|
||||
#endif
|
||||
|
||||
# ifndef VOLUME_NAME_NT
|
||||
# define VOLUME_NAME_NT 0x2
|
||||
# endif
|
||||
@@ -936,7 +949,7 @@ static int tsrm_realpath_r(char *path, int start, int len, int *ll, time_t *t, i
|
||||
return -1;
|
||||
}
|
||||
|
||||
hLink = CreateFileW(pathw, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, NULL);
|
||||
hLink = CreateFileW(pathw, 0, 0, NULL, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, NULL);
|
||||
if(hLink == INVALID_HANDLE_VALUE) {
|
||||
free_alloca(tmp, use_heap);
|
||||
FREE_PATHW()
|
||||
@@ -1029,7 +1042,11 @@ static int tsrm_realpath_r(char *path, int start, int len, int *ll, time_t *t, i
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else if (pbuffer->ReparseTag == IO_REPARSE_TAG_DEDUP) {
|
||||
else if (pbuffer->ReparseTag == IO_REPARSE_TAG_DEDUP ||
|
||||
/* Starting with 1709. */
|
||||
(pbuffer->ReparseTag & IO_REPARSE_TAG_CLOUD_MASK) != 0 && 0x90001018L != pbuffer->ReparseTag ||
|
||||
IO_REPARSE_TAG_CLOUD == pbuffer->ReparseTag ||
|
||||
IO_REPARSE_TAG_ONEDRIVE == pbuffer->ReparseTag) {
|
||||
isabsolute = 1;
|
||||
substitutename = malloc((len + 1) * sizeof(char));
|
||||
if (!substitutename) {
|
||||
|
||||
+3
-3
@@ -5080,8 +5080,8 @@ ZEND_VM_HANDLER(110, ZEND_CLONE, CONST|TMPVAR|UNUSED|THIS|CV, ANY)
|
||||
/* Ensure that if we're calling a private function, we're allowed to do so.
|
||||
*/
|
||||
scope = EX(func)->op_array.scope;
|
||||
if (UNEXPECTED(ce != scope)) {
|
||||
zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(ce->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
if (!zend_check_private(clone, scope, clone->common.function_name)) {
|
||||
zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
FREE_OP1();
|
||||
HANDLE_EXCEPTION();
|
||||
}
|
||||
@@ -5090,7 +5090,7 @@ ZEND_VM_HANDLER(110, ZEND_CLONE, CONST|TMPVAR|UNUSED|THIS|CV, ANY)
|
||||
*/
|
||||
scope = EX(func)->op_array.scope;
|
||||
if (UNEXPECTED(!zend_check_protected(zend_get_function_root_class(clone), scope))) {
|
||||
zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(ce->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
FREE_OP1();
|
||||
HANDLE_EXCEPTION();
|
||||
}
|
||||
|
||||
+12
-12
@@ -3307,8 +3307,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_CONST_HANDLER(ZEND_
|
||||
/* Ensure that if we're calling a private function, we're allowed to do so.
|
||||
*/
|
||||
scope = EX(func)->op_array.scope;
|
||||
if (UNEXPECTED(ce != scope)) {
|
||||
zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(ce->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
if (!zend_check_private(clone, scope, clone->common.function_name)) {
|
||||
zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
|
||||
HANDLE_EXCEPTION();
|
||||
}
|
||||
@@ -3317,7 +3317,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_CONST_HANDLER(ZEND_
|
||||
*/
|
||||
scope = EX(func)->op_array.scope;
|
||||
if (UNEXPECTED(!zend_check_protected(zend_get_function_root_class(clone), scope))) {
|
||||
zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(ce->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
|
||||
HANDLE_EXCEPTION();
|
||||
}
|
||||
@@ -28031,8 +28031,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_UNUSED_HANDLER(ZEND
|
||||
/* Ensure that if we're calling a private function, we're allowed to do so.
|
||||
*/
|
||||
scope = EX(func)->op_array.scope;
|
||||
if (UNEXPECTED(ce != scope)) {
|
||||
zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(ce->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
if (!zend_check_private(clone, scope, clone->common.function_name)) {
|
||||
zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
|
||||
HANDLE_EXCEPTION();
|
||||
}
|
||||
@@ -28041,7 +28041,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_UNUSED_HANDLER(ZEND
|
||||
*/
|
||||
scope = EX(func)->op_array.scope;
|
||||
if (UNEXPECTED(!zend_check_protected(zend_get_function_root_class(clone), scope))) {
|
||||
zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(ce->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
|
||||
HANDLE_EXCEPTION();
|
||||
}
|
||||
@@ -35361,8 +35361,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_CV_HANDLER(ZEND_OPC
|
||||
/* Ensure that if we're calling a private function, we're allowed to do so.
|
||||
*/
|
||||
scope = EX(func)->op_array.scope;
|
||||
if (UNEXPECTED(ce != scope)) {
|
||||
zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(ce->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
if (!zend_check_private(clone, scope, clone->common.function_name)) {
|
||||
zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
|
||||
HANDLE_EXCEPTION();
|
||||
}
|
||||
@@ -35371,7 +35371,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_CV_HANDLER(ZEND_OPC
|
||||
*/
|
||||
scope = EX(func)->op_array.scope;
|
||||
if (UNEXPECTED(!zend_check_protected(zend_get_function_root_class(clone), scope))) {
|
||||
zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(ce->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
|
||||
HANDLE_EXCEPTION();
|
||||
}
|
||||
@@ -51620,8 +51620,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_TMPVAR_HANDLER(ZEND
|
||||
/* Ensure that if we're calling a private function, we're allowed to do so.
|
||||
*/
|
||||
scope = EX(func)->op_array.scope;
|
||||
if (UNEXPECTED(ce != scope)) {
|
||||
zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(ce->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
if (!zend_check_private(clone, scope, clone->common.function_name)) {
|
||||
zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
zval_ptr_dtor_nogc(free_op1);
|
||||
HANDLE_EXCEPTION();
|
||||
}
|
||||
@@ -51630,7 +51630,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_TMPVAR_HANDLER(ZEND
|
||||
*/
|
||||
scope = EX(func)->op_array.scope;
|
||||
if (UNEXPECTED(!zend_check_protected(zend_get_function_root_class(clone), scope))) {
|
||||
zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(ce->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
|
||||
zval_ptr_dtor_nogc(free_op1);
|
||||
HANDLE_EXCEPTION();
|
||||
}
|
||||
|
||||
+11
-2
@@ -2,6 +2,7 @@
|
||||
|
||||
set SDK_REMOTE=https://github.com/OSTC/php-sdk-binary-tools.git
|
||||
set SDK_BRANCH=%PHP_BUILD_SDK_BRANCH%
|
||||
set SDK_RUNNER=%PHP_BUILD_CACHE_SDK_DIR%\phpsdk-vc14-%PLATFORM%.bat
|
||||
|
||||
if not exist "%PHP_BUILD_CACHE_BASE_DIR%" (
|
||||
echo Creating %PHP_BUILD_CACHE_BASE_DIR%
|
||||
@@ -13,17 +14,25 @@ if not exist "%PHP_BUILD_OBJ_DIR%" (
|
||||
mkdir "%PHP_BUILD_OBJ_DIR%"
|
||||
)
|
||||
|
||||
if not exist "%SDK_RUNNER%" (
|
||||
if exist "%PHP_BUILD_CACHE_SDK_DIR%" rmdir /s /q "%PHP_BUILD_CACHE_SDK_DIR%"
|
||||
)
|
||||
|
||||
if not exist "%PHP_BUILD_CACHE_SDK_DIR%" (
|
||||
echo Cloning remote SDK repository
|
||||
git clone --branch %SDK_BRANCH% %SDK_REMOTE% "%PHP_BUILD_CACHE_SDK_DIR%" 2>&1
|
||||
) else (
|
||||
)
|
||||
|
||||
for /f "tokens=*" %%a in ('type %PHP_BUILD_CACHE_SDK_DIR%\VERSION') do set GOT_SDK_VER=%%a
|
||||
echo Got SDK version %GOT_SDK_VER%
|
||||
if NOT "%GOT_SDK_VER%" == "%PHP_BUILD_SDK_BRANCH:~8%" (
|
||||
echo Switching to the configured SDK version %SDK_BRANCH:~8%
|
||||
echo Fetching remote SDK repository
|
||||
git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" fetch --prune origin 2>&1
|
||||
echo Checkout SDK repository branch
|
||||
git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" checkout --force %SDK_BRANCH%
|
||||
)
|
||||
|
||||
set SDK_RUNNER=%PHP_BUILD_CACHE_SDK_DIR%\phpsdk-vc14-%PLATFORM%.bat
|
||||
if not exist "%SDK_RUNNER%" (
|
||||
echo "%SDK_RUNNER%" doesn't exist
|
||||
exit /b 3
|
||||
|
||||
@@ -8,6 +8,8 @@ if "%APPVEYOR%" equ "True" rmdir /s /q C:\mingw >NUL 2>NUL
|
||||
if %errorlevel% neq 0 exit /b 3
|
||||
if "%APPVEYOR%" equ "True" rmdir /s /q C:\mingw-w64 >NUL 2>NUL
|
||||
if %errorlevel% neq 0 exit /b 3
|
||||
if "%APPVEYOR%" equ "True" rmdir /s /q C:\msys64 >NUL 2>NUL
|
||||
if %errorlevel% neq 0 exit /b 3
|
||||
|
||||
cd /D %APPVEYOR_BUILD_FOLDER%
|
||||
if %errorlevel% neq 0 exit /b 3
|
||||
|
||||
+2
-2
@@ -119,8 +119,8 @@ int zend_sprintf(char *buffer, const char *format, ...);
|
||||
|
||||
PHP_MAJOR_VERSION=7
|
||||
PHP_MINOR_VERSION=1
|
||||
PHP_RELEASE_VERSION=11
|
||||
PHP_EXTRA_VERSION="-dev"
|
||||
PHP_RELEASE_VERSION=13
|
||||
PHP_EXTRA_VERSION="RC1"
|
||||
PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
|
||||
PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
|
||||
|
||||
|
||||
+2
-2
@@ -33,8 +33,8 @@ if test "$PHP_CURL" != "no"; then
|
||||
fi
|
||||
|
||||
if test -z "$CURL_DIR"; then
|
||||
AC_MSG_ERROR(Could not find cURL, please reinstall the libcurl distribution -
|
||||
easy.h should be in <curl-dir>/include/curl/)
|
||||
AC_MSG_ERROR(Could not find cURL, please reinstall the libcurl distribution -dnl
|
||||
easy.h should be in <curl-dir>/include/curl/)
|
||||
fi
|
||||
|
||||
CURL_CONFIG="curl-config"
|
||||
|
||||
@@ -219,6 +219,17 @@ static int php_curl_option_url(php_curl *ch, const char *url, const size_t len)
|
||||
#endif
|
||||
}
|
||||
|
||||
#if LIBCURL_VERSION_NUM > 0x073800 && defined(PHP_WIN32)
|
||||
if (len > sizeof("file://") - 1 && '/' != url[sizeof("file://") - 1] && !strncmp("file://", url, sizeof("file://") - 1) && len < MAXPATHLEN - 2) {
|
||||
char _tmp[MAXPATHLEN] = {0};
|
||||
|
||||
memmove(_tmp, "file:///", sizeof("file:///") - 1);
|
||||
memmove(_tmp + sizeof("file:///") - 1, url + sizeof("file://") - 1, len - sizeof("file://") + 1);
|
||||
|
||||
return php_curl_option_str(ch, CURLOPT_URL, _tmp, len + 1, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
return php_curl_option_str(ch, CURLOPT_URL, url, len, 0);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
+1189
-1081
File diff suppressed because it is too large.
Load diff
@@ -931,8 +931,8 @@ isoweek = year4 "-"? "W" weekofyear;
|
||||
exif = year4 ":" monthlz ":" daylz " " hour24lz ":" minutelz ":" secondlz;
|
||||
firstdayof = 'first day of';
|
||||
lastdayof = 'last day of';
|
||||
backof = 'back of ' hour24 space? meridian?;
|
||||
frontof = 'front of ' hour24 space? meridian?;
|
||||
backof = 'back of ' hour24 (space? meridian)?;
|
||||
frontof = 'front of ' hour24 (space? meridian)?;
|
||||
|
||||
/* Common Log Format: 10/Oct/2000:13:55:36 -0700 */
|
||||
clf = day "/" monthabbr "/" year4 ":" hour24lz ":" minutelz ":" secondlz space tzcorrection;
|
||||
|
||||
+1009
-1078
File diff suppressed because it is too large.
Load diff
+14
-489
@@ -4,29 +4,18 @@
|
||||
{ "acdt", 1, 37800, "Australia/North" },
|
||||
{ "acdt", 1, 37800, "Australia/South" },
|
||||
{ "acdt", 1, 37800, "Australia/Yancowinna" },
|
||||
{ "acst", 1, -14400, "America/Porto_Acre" },
|
||||
{ "acst", 0, 32400, "Australia/Adelaide" },
|
||||
{ "acst", 0, 34200, "Australia/Adelaide" },
|
||||
{ "acst", 1, -14400, "America/Eirunepe" },
|
||||
{ "acst", 1, -14400, "America/Rio_Branco" },
|
||||
{ "acst", 1, -14400, "Brazil/Acre" },
|
||||
{ "acst", 0, 32400, "Australia/Broken_Hill" },
|
||||
{ "acst", 0, 32400, "Australia/Darwin" },
|
||||
{ "acst", 0, 32400, "Australia/North" },
|
||||
{ "acst", 0, 32400, "Australia/South" },
|
||||
{ "acst", 0, 32400, "Australia/Yancowinna" },
|
||||
{ "acst", 0, 34200, "Asia/Jayapura" },
|
||||
{ "acst", 0, 34200, "Australia/Broken_Hill" },
|
||||
{ "acst", 0, 34200, "Australia/Darwin" },
|
||||
{ "acst", 0, 34200, "Australia/North" },
|
||||
{ "acst", 0, 34200, "Australia/South" },
|
||||
{ "acst", 0, 34200, "Australia/Yancowinna" },
|
||||
{ "act", 0, -18000, "America/Porto_Acre" },
|
||||
{ "act", 0, -18000, "America/Eirunepe" },
|
||||
{ "act", 0, -18000, "America/Rio_Branco" },
|
||||
{ "act", 0, -18000, "Brazil/Acre" },
|
||||
{ "acwdt", 1, 35100, "Australia/Eucla" },
|
||||
{ "acwst", 0, 31500, "Australia/Eucla" },
|
||||
{ "addt", 1, -7200, "America/Goose_Bay" },
|
||||
{ "addt", 1, -7200, "America/Pangnirtung" },
|
||||
{ "adt", 1, -10800, "America/Halifax" },
|
||||
@@ -40,7 +29,6 @@
|
||||
{ "adt", 1, -10800, "America/Thule" },
|
||||
{ "adt", 1, -10800, "Atlantic/Bermuda" },
|
||||
{ "adt", 1, -10800, "Canada/Atlantic" },
|
||||
{ "adt", 1, 14400, "Asia/Baghdad" },
|
||||
{ "aedt", 1, 39600, "Australia/Melbourne" },
|
||||
{ "aedt", 1, 39600, "Antarctica/Macquarie" },
|
||||
{ "aedt", 1, 39600, "Australia/ACT" },
|
||||
@@ -69,8 +57,6 @@
|
||||
{ "aest", 0, 36000, "Australia/Sydney" },
|
||||
{ "aest", 0, 36000, "Australia/Tasmania" },
|
||||
{ "aest", 0, 36000, "Australia/Victoria" },
|
||||
{ "aft", 0, 16200, "Asia/Kabul" },
|
||||
{ "aft", 0, 14400, "Asia/Kabul" },
|
||||
{ "ahdt", 1, -32400, "America/Anchorage" },
|
||||
{ "ahst", 0, -36000, "America/Anchorage" },
|
||||
{ "ahst", 0, -36000, "America/Adak" },
|
||||
@@ -87,31 +73,9 @@
|
||||
{ "akst", 0, -32400, "America/Nome" },
|
||||
{ "akst", 0, -32400, "America/Sitka" },
|
||||
{ "akst", 0, -32400, "America/Yakutat" },
|
||||
{ "amst", 1, -10800, "America/Boa_Vista" },
|
||||
{ "amst", 1, -10800, "America/Campo_Grande" },
|
||||
{ "amst", 1, -10800, "America/Cuiaba" },
|
||||
{ "amst", 1, -10800, "America/Manaus" },
|
||||
{ "amst", 1, -10800, "America/Porto_Velho" },
|
||||
{ "amst", 1, -10800, "America/Santarem" },
|
||||
{ "amst", 1, -10800, "Brazil/West" },
|
||||
{ "amt", 0, -13840, "America/Asuncion" },
|
||||
{ "amt", 0, -14400, "America/Boa_Vista" },
|
||||
{ "amt", 0, -14400, "America/Campo_Grande" },
|
||||
{ "amt", 0, -14400, "America/Cuiaba" },
|
||||
{ "amt", 0, -14400, "America/Eirunepe" },
|
||||
{ "amt", 0, -14400, "America/Manaus" },
|
||||
{ "amt", 0, -14400, "America/Porto_Acre" },
|
||||
{ "amt", 0, -14400, "America/Porto_Velho" },
|
||||
{ "amt", 0, -14400, "America/Rio_Branco" },
|
||||
{ "amt", 0, -14400, "America/Santarem" },
|
||||
{ "amt", 0, -14400, "Brazil/Acre" },
|
||||
{ "amt", 0, -14400, "Brazil/West" },
|
||||
{ "amt", 0, 1172, "Europe/Amsterdam" },
|
||||
{ "amt", 0, 5692, "Europe/Athens" },
|
||||
{ "ant", 0, -16200, "America/Curacao" },
|
||||
{ "ant", 0, -16200, "America/Aruba" },
|
||||
{ "ant", 0, -16200, "America/Kralendijk" },
|
||||
{ "ant", 0, -16200, "America/Lower_Princes" },
|
||||
{ "apt", 1, -10800, "America/Halifax" },
|
||||
{ "apt", 1, -10800, "America/Blanc-Sablon" },
|
||||
{ "apt", 1, -10800, "America/Glace_Bay" },
|
||||
@@ -119,87 +83,7 @@
|
||||
{ "apt", 1, -10800, "America/Pangnirtung" },
|
||||
{ "apt", 1, -10800, "America/Puerto_Rico" },
|
||||
{ "apt", 1, -10800, "Canada/Atlantic" },
|
||||
{ "arst", 1, -7200, "America/Buenos_Aires" },
|
||||
{ "arst", 1, -10800, "America/Buenos_Aires" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Buenos_Aires" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Catamarca" },
|
||||
{ "arst", 1, -10800, "America/Argentina/ComodRivadavia" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Cordoba" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Jujuy" },
|
||||
{ "arst", 1, -10800, "America/Argentina/La_Rioja" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Mendoza" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Rio_Gallegos" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Salta" },
|
||||
{ "arst", 1, -10800, "America/Argentina/San_Juan" },
|
||||
{ "arst", 1, -10800, "America/Argentina/San_Luis" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Tucuman" },
|
||||
{ "arst", 1, -10800, "America/Argentina/Ushuaia" },
|
||||
{ "arst", 1, -10800, "America/Catamarca" },
|
||||
{ "arst", 1, -10800, "America/Cordoba" },
|
||||
{ "arst", 1, -10800, "America/Jujuy" },
|
||||
{ "arst", 1, -10800, "America/Mendoza" },
|
||||
{ "arst", 1, -10800, "America/Rosario" },
|
||||
{ "arst", 1, -10800, "Antarctica/Palmer" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Buenos_Aires" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Catamarca" },
|
||||
{ "arst", 1, -7200, "America/Argentina/ComodRivadavia" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Cordoba" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Jujuy" },
|
||||
{ "arst", 1, -7200, "America/Argentina/La_Rioja" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Mendoza" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Rio_Gallegos" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Salta" },
|
||||
{ "arst", 1, -7200, "America/Argentina/San_Juan" },
|
||||
{ "arst", 1, -7200, "America/Argentina/San_Luis" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Tucuman" },
|
||||
{ "arst", 1, -7200, "America/Argentina/Ushuaia" },
|
||||
{ "arst", 1, -7200, "America/Catamarca" },
|
||||
{ "arst", 1, -7200, "America/Cordoba" },
|
||||
{ "arst", 1, -7200, "America/Jujuy" },
|
||||
{ "arst", 1, -7200, "America/Mendoza" },
|
||||
{ "arst", 1, -7200, "America/Rosario" },
|
||||
{ "arst", 1, -7200, "Antarctica/Palmer" },
|
||||
{ "art", 0, -10800, "America/Buenos_Aires" },
|
||||
{ "art", 0, -14400, "America/Buenos_Aires" },
|
||||
{ "art", 0, -10800, "America/Argentina/Buenos_Aires" },
|
||||
{ "art", 0, -10800, "America/Argentina/Catamarca" },
|
||||
{ "art", 0, -10800, "America/Argentina/ComodRivadavia" },
|
||||
{ "art", 0, -10800, "America/Argentina/Cordoba" },
|
||||
{ "art", 0, -10800, "America/Argentina/Jujuy" },
|
||||
{ "art", 0, -10800, "America/Argentina/La_Rioja" },
|
||||
{ "art", 0, -10800, "America/Argentina/Mendoza" },
|
||||
{ "art", 0, -10800, "America/Argentina/Rio_Gallegos" },
|
||||
{ "art", 0, -10800, "America/Argentina/Salta" },
|
||||
{ "art", 0, -10800, "America/Argentina/San_Juan" },
|
||||
{ "art", 0, -10800, "America/Argentina/San_Luis" },
|
||||
{ "art", 0, -10800, "America/Argentina/Tucuman" },
|
||||
{ "art", 0, -10800, "America/Argentina/Ushuaia" },
|
||||
{ "art", 0, -10800, "America/Catamarca" },
|
||||
{ "art", 0, -10800, "America/Cordoba" },
|
||||
{ "art", 0, -10800, "America/Jujuy" },
|
||||
{ "art", 0, -10800, "America/Mendoza" },
|
||||
{ "art", 0, -10800, "America/Rosario" },
|
||||
{ "art", 0, -10800, "Antarctica/Palmer" },
|
||||
{ "art", 0, -14400, "America/Argentina/Buenos_Aires" },
|
||||
{ "art", 0, -14400, "America/Argentina/Catamarca" },
|
||||
{ "art", 0, -14400, "America/Argentina/ComodRivadavia" },
|
||||
{ "art", 0, -14400, "America/Argentina/Cordoba" },
|
||||
{ "art", 0, -14400, "America/Argentina/Jujuy" },
|
||||
{ "art", 0, -14400, "America/Argentina/La_Rioja" },
|
||||
{ "art", 0, -14400, "America/Argentina/Mendoza" },
|
||||
{ "art", 0, -14400, "America/Argentina/Rio_Gallegos" },
|
||||
{ "art", 0, -14400, "America/Argentina/Salta" },
|
||||
{ "art", 0, -14400, "America/Argentina/San_Juan" },
|
||||
{ "art", 0, -14400, "America/Argentina/San_Luis" },
|
||||
{ "art", 0, -14400, "America/Argentina/Tucuman" },
|
||||
{ "art", 0, -14400, "America/Argentina/Ushuaia" },
|
||||
{ "art", 0, -14400, "America/Catamarca" },
|
||||
{ "art", 0, -14400, "America/Cordoba" },
|
||||
{ "art", 0, -14400, "America/Jujuy" },
|
||||
{ "art", 0, -14400, "America/Mendoza" },
|
||||
{ "art", 0, -14400, "America/Rosario" },
|
||||
{ "art", 0, -14400, "Antarctica/Palmer" },
|
||||
{ "ast", 0, 10800, "Asia/Riyadh" },
|
||||
{ "apt", 1, -32400, "America/Anchorage" },
|
||||
{ "ast", 0, -14400, "America/Anguilla" },
|
||||
{ "ast", 0, -14400, "America/Antigua" },
|
||||
{ "ast", 0, -14400, "America/Aruba" },
|
||||
@@ -234,11 +118,7 @@
|
||||
{ "ast", 0, -14400, "America/Virgin" },
|
||||
{ "ast", 0, -14400, "Atlantic/Bermuda" },
|
||||
{ "ast", 0, -14400, "Canada/Atlantic" },
|
||||
{ "ast", 0, 10800, "Asia/Aden" },
|
||||
{ "ast", 0, 10800, "Asia/Baghdad" },
|
||||
{ "ast", 0, 10800, "Asia/Bahrain" },
|
||||
{ "ast", 0, 10800, "Asia/Kuwait" },
|
||||
{ "ast", 0, 10800, "Asia/Qatar" },
|
||||
{ "ast", 0, -36000, "America/Anchorage" },
|
||||
{ "awdt", 1, 32400, "Australia/Perth" },
|
||||
{ "awdt", 1, 32400, "Australia/West" },
|
||||
{ "awst", 0, 28800, "Australia/Perth" },
|
||||
@@ -250,14 +130,8 @@
|
||||
{ "awt", 1, -10800, "America/Pangnirtung" },
|
||||
{ "awt", 1, -10800, "America/Puerto_Rico" },
|
||||
{ "awt", 1, -10800, "Canada/Atlantic" },
|
||||
{ "azomt", 1, 0, "Atlantic/Azores" },
|
||||
{ "azost", 1, 0, "Atlantic/Azores" },
|
||||
{ "azost", 1, -3600, "Atlantic/Azores" },
|
||||
{ "azot", 0, -3600, "Atlantic/Azores" },
|
||||
{ "azot", 0, -7200, "Atlantic/Azores" },
|
||||
{ "awt", 1, -32400, "America/Anchorage" },
|
||||
{ "bdst", 1, 7200, "Europe/London" },
|
||||
{ "bdst", 1, 25200, "Asia/Dacca" },
|
||||
{ "bdst", 1, 25200, "Asia/Dhaka" },
|
||||
{ "bdst", 1, 7200, "Europe/Belfast" },
|
||||
{ "bdst", 1, 7200, "Europe/Gibraltar" },
|
||||
{ "bdst", 1, 7200, "Europe/Guernsey" },
|
||||
@@ -265,32 +139,8 @@
|
||||
{ "bdst", 1, 7200, "Europe/Jersey" },
|
||||
{ "bdst", 1, 7200, "GB" },
|
||||
{ "bdt", 1, -36000, "America/Adak" },
|
||||
{ "bdt", 0, 21600, "Asia/Dacca" },
|
||||
{ "bdt", 1, -36000, "America/Atka" },
|
||||
{ "bdt", 1, -36000, "America/Nome" },
|
||||
{ "bdt", 0, 21600, "Asia/Dhaka" },
|
||||
{ "beat", 0, 9000, "Africa/Mogadishu" },
|
||||
{ "beat", 0, 9000, "Africa/Addis_Ababa" },
|
||||
{ "beat", 0, 9000, "Africa/Asmara" },
|
||||
{ "beat", 0, 9000, "Africa/Asmera" },
|
||||
{ "beat", 0, 9000, "Africa/Dar_es_Salaam" },
|
||||
{ "beat", 0, 9000, "Africa/Djibouti" },
|
||||
{ "beat", 0, 9000, "Africa/Kampala" },
|
||||
{ "beat", 0, 9000, "Africa/Nairobi" },
|
||||
{ "beat", 0, 9000, "Indian/Antananarivo" },
|
||||
{ "beat", 0, 9000, "Indian/Comoro" },
|
||||
{ "beat", 0, 9000, "Indian/Mayotte" },
|
||||
{ "beaut", 0, 9900, "Africa/Nairobi" },
|
||||
{ "beaut", 0, 9900, "Africa/Addis_Ababa" },
|
||||
{ "beaut", 0, 9900, "Africa/Asmara" },
|
||||
{ "beaut", 0, 9900, "Africa/Asmera" },
|
||||
{ "beaut", 0, 9900, "Africa/Dar_es_Salaam" },
|
||||
{ "beaut", 0, 9900, "Africa/Djibouti" },
|
||||
{ "beaut", 0, 9900, "Africa/Kampala" },
|
||||
{ "beaut", 0, 9900, "Africa/Mogadishu" },
|
||||
{ "beaut", 0, 9900, "Indian/Antananarivo" },
|
||||
{ "beaut", 0, 9900, "Indian/Comoro" },
|
||||
{ "beaut", 0, 9900, "Indian/Mayotte" },
|
||||
{ "bmt", 0, -14309, "America/Barbados" },
|
||||
{ "bmt", 0, 6264, "Europe/Tiraspol" },
|
||||
{ "bmt", 0, -17776, "America/Bogota" },
|
||||
@@ -305,38 +155,12 @@
|
||||
{ "bmt", 0, 25632, "Asia/Jakarta" },
|
||||
{ "bmt", 0, 6264, "Europe/Bucharest" },
|
||||
{ "bmt", 0, 6264, "Europe/Chisinau" },
|
||||
{ "bnt", 0, 28800, "Asia/Brunei" },
|
||||
{ "bnt", 0, 27000, "Asia/Brunei" },
|
||||
{ "bortst", 1, 30000, "Asia/Kuching" },
|
||||
{ "bort", 0, 28800, "Asia/Kuching" },
|
||||
{ "bort", 0, 27000, "Asia/Kuching" },
|
||||
{ "bost", 1, -12756, "America/La_Paz" },
|
||||
{ "bot", 0, -14400, "America/La_Paz" },
|
||||
{ "brst", 1, -7200, "America/Sao_Paulo" },
|
||||
{ "brst", 1, -7200, "America/Araguaina" },
|
||||
{ "brst", 1, -7200, "America/Bahia" },
|
||||
{ "brst", 1, -7200, "America/Belem" },
|
||||
{ "brst", 1, -7200, "America/Fortaleza" },
|
||||
{ "brst", 1, -7200, "America/Maceio" },
|
||||
{ "brst", 1, -7200, "America/Recife" },
|
||||
{ "brst", 1, -7200, "Brazil/East" },
|
||||
{ "brt", 0, -10800, "America/Sao_Paulo" },
|
||||
{ "brt", 0, -10800, "America/Araguaina" },
|
||||
{ "brt", 0, -10800, "America/Bahia" },
|
||||
{ "brt", 0, -10800, "America/Belem" },
|
||||
{ "brt", 0, -10800, "America/Fortaleza" },
|
||||
{ "brt", 0, -10800, "America/Maceio" },
|
||||
{ "brt", 0, -10800, "America/Recife" },
|
||||
{ "brt", 0, -10800, "America/Santarem" },
|
||||
{ "brt", 0, -10800, "Brazil/East" },
|
||||
{ "bst", 1, 3600, "Europe/London" },
|
||||
{ "bst", 0, 3600, "Europe/London" },
|
||||
{ "bst", 0, -39600, "America/Adak" },
|
||||
{ "bst", 0, -39600, "America/Atka" },
|
||||
{ "bst", 0, -39600, "America/Nome" },
|
||||
{ "bst", 0, -39600, "Pacific/Midway" },
|
||||
{ "bst", 0, -39600, "Pacific/Pago_Pago" },
|
||||
{ "bst", 0, -39600, "Pacific/Samoa" },
|
||||
{ "bst", 0, 3600, "Europe/Belfast" },
|
||||
{ "bst", 0, 3600, "Europe/Guernsey" },
|
||||
{ "bst", 0, 3600, "Europe/Isle_of_Man" },
|
||||
@@ -349,21 +173,9 @@
|
||||
{ "bst", 1, 3600, "Europe/Isle_of_Man" },
|
||||
{ "bst", 1, 3600, "Europe/Jersey" },
|
||||
{ "bst", 1, 3600, "GB" },
|
||||
{ "bst", 0, 39600, "Pacific/Bougainville" },
|
||||
{ "btt", 0, 21600, "Asia/Thimbu" },
|
||||
{ "btt", 0, 21600, "Asia/Thimphu" },
|
||||
{ "burt", 0, 23400, "Asia/Kolkata" },
|
||||
{ "burt", 0, 23400, "Asia/Calcutta" },
|
||||
{ "burt", 0, 23400, "Asia/Dacca" },
|
||||
{ "burt", 0, 23400, "Asia/Dhaka" },
|
||||
{ "burt", 0, 23400, "Asia/Rangoon" },
|
||||
{ "burt", 0, 23400, "Asia/Yangon" },
|
||||
{ "cant", 0, -3600, "Atlantic/Canary" },
|
||||
{ "capt", 1, -32400, "America/Anchorage" },
|
||||
{ "cast", 0, 34200, "Australia/Adelaide" },
|
||||
{ "cast", 1, 10800, "Africa/Juba" },
|
||||
{ "cast", 1, 10800, "Africa/Khartoum" },
|
||||
{ "cat", 0, -36000, "America/Anchorage" },
|
||||
{ "cat", 0, 7200, "Africa/Khartoum" },
|
||||
{ "cat", 0, 7200, "Africa/Blantyre" },
|
||||
{ "cat", 0, 7200, "Africa/Bujumbura" },
|
||||
@@ -375,8 +187,6 @@
|
||||
{ "cat", 0, 7200, "Africa/Lusaka" },
|
||||
{ "cat", 0, 7200, "Africa/Maputo" },
|
||||
{ "cat", 0, 7200, "Africa/Windhoek" },
|
||||
{ "cawt", 1, -32400, "America/Anchorage" },
|
||||
{ "cct", 0, 23400, "Indian/Cocos" },
|
||||
{ "cddt", 1, -14400, "America/Rankin_Inlet" },
|
||||
{ "cddt", 1, -14400, "America/Resolute" },
|
||||
{ "cdt", 1, -18000, "America/Chicago" },
|
||||
@@ -428,6 +238,8 @@
|
||||
{ "cdt", 1, 32400, "Asia/Chongqing" },
|
||||
{ "cdt", 1, 32400, "Asia/Chungking" },
|
||||
{ "cdt", 1, 32400, "Asia/Harbin" },
|
||||
{ "cdt", 1, 32400, "Asia/Macao" },
|
||||
{ "cdt", 1, 32400, "Asia/Macau" },
|
||||
{ "cdt", 1, 32400, "Asia/Taipei" },
|
||||
{ "cdt", 1, 32400, "PRC" },
|
||||
{ "cdt", 1, 32400, "ROC" },
|
||||
@@ -537,32 +349,6 @@
|
||||
{ "cet", 0, 3600, "Europe/Zagreb" },
|
||||
{ "cet", 0, 3600, "Europe/Zaporozhye" },
|
||||
{ "cet", 0, 3600, "Europe/Zurich" },
|
||||
{ "cgst", 1, -3600, "America/Scoresbysund" },
|
||||
{ "cgt", 0, -7200, "America/Scoresbysund" },
|
||||
{ "chadt", 1, 49500, "Pacific/Chatham" },
|
||||
{ "chast", 0, 45900, "Pacific/Chatham" },
|
||||
{ "chast", 0, 44100, "Pacific/Chatham" },
|
||||
{ "chdt", 1, -19800, "America/Belize" },
|
||||
{ "chost", 1, 36000, "Asia/Choibalsan" },
|
||||
{ "chost", 1, 32400, "Asia/Choibalsan" },
|
||||
{ "chot", 0, 32400, "Asia/Choibalsan" },
|
||||
{ "chot", 0, 28800, "Asia/Choibalsan" },
|
||||
{ "chut", 0, 36000, "Pacific/Chuuk" },
|
||||
{ "chut", 0, 36000, "Pacific/Truk" },
|
||||
{ "chut", 0, 36000, "Pacific/Yap" },
|
||||
{ "ckhst", 1, -34200, "Pacific/Rarotonga" },
|
||||
{ "ckt", 0, -36000, "Pacific/Rarotonga" },
|
||||
{ "ckt", 0, -37800, "Pacific/Rarotonga" },
|
||||
{ "clst", 1, -10800, "America/Santiago" },
|
||||
{ "clst", 1, -14400, "America/Santiago" },
|
||||
{ "clst", 1, -10800, "Antarctica/Palmer" },
|
||||
{ "clst", 1, -10800, "Chile/Continental" },
|
||||
{ "clst", 1, -14400, "Chile/Continental" },
|
||||
{ "clt", 0, -14400, "America/Santiago" },
|
||||
{ "clt", 0, -18000, "America/Santiago" },
|
||||
{ "clt", 0, -14400, "Antarctica/Palmer" },
|
||||
{ "clt", 0, -14400, "Chile/Continental" },
|
||||
{ "clt", 0, -18000, "Chile/Continental" },
|
||||
{ "cmt", 0, -15408, "America/Argentina/Buenos_Aires" },
|
||||
{ "cmt", 0, -15408, "America/Argentina/Catamarca" },
|
||||
{ "cmt", 0, -15408, "America/Argentina/ComodRivadavia" },
|
||||
@@ -589,8 +375,6 @@
|
||||
{ "cmt", 0, 3020, "Europe/Copenhagen" },
|
||||
{ "cmt", 0, 6900, "Europe/Chisinau" },
|
||||
{ "cmt", 0, 6900, "Europe/Tiraspol" },
|
||||
{ "cost", 1, -14400, "America/Bogota" },
|
||||
{ "cot", 0, -18000, "America/Bogota" },
|
||||
{ "cpt", 1, -18000, "America/Chicago" },
|
||||
{ "cpt", 1, -18000, "America/Atikokan" },
|
||||
{ "cpt", 1, -18000, "America/Coral_Harbour" },
|
||||
@@ -662,7 +446,6 @@
|
||||
{ "cst", 0, -21600, "America/Thunder_Bay" },
|
||||
{ "cst", 0, -21600, "America/Winnipeg" },
|
||||
{ "cst", 0, -21600, "Canada/Central" },
|
||||
{ "cst", 0, -21600, "Canada/East-Saskatchewan" },
|
||||
{ "cst", 0, -21600, "Canada/Saskatchewan" },
|
||||
{ "cst", 0, -21600, "Mexico/BajaSur" },
|
||||
{ "cst", 0, -21600, "Mexico/General" },
|
||||
@@ -675,10 +458,6 @@
|
||||
{ "cst", 0, 28800, "Asia/Taipei" },
|
||||
{ "cst", 0, 28800, "PRC" },
|
||||
{ "cst", 0, 28800, "ROC" },
|
||||
{ "cut", 0, 8400, "Europe/Zaporozhye" },
|
||||
{ "cvst", 1, -3600, "Atlantic/Cape_Verde" },
|
||||
{ "cvt", 0, -7200, "Atlantic/Cape_Verde" },
|
||||
{ "cvt", 0, -3600, "Atlantic/Cape_Verde" },
|
||||
{ "cwt", 1, -18000, "America/Chicago" },
|
||||
{ "cwt", 1, -18000, "America/Atikokan" },
|
||||
{ "cwt", 1, -18000, "America/Coral_Harbour" },
|
||||
@@ -702,20 +481,9 @@
|
||||
{ "cwt", 1, -18000, "America/Winnipeg" },
|
||||
{ "cwt", 1, -18000, "Canada/Central" },
|
||||
{ "cwt", 1, -18000, "Mexico/General" },
|
||||
{ "cxt", 0, 25200, "Indian/Christmas" },
|
||||
{ "chst", 0, 36000, "Pacific/Guam" },
|
||||
{ "chst", 0, 36000, "Pacific/Saipan" },
|
||||
{ "dact", 0, 21600, "Asia/Dacca" },
|
||||
{ "dact", 0, 21600, "Asia/Dhaka" },
|
||||
{ "dmt", 0, -1521, "Europe/Dublin" },
|
||||
{ "easst", 1, -21600, "Chile/EasterIsland" },
|
||||
{ "easst", 1, -18000, "Chile/EasterIsland" },
|
||||
{ "easst", 1, -18000, "Pacific/Easter" },
|
||||
{ "easst", 1, -21600, "Pacific/Easter" },
|
||||
{ "east", 0, -21600, "Chile/EasterIsland" },
|
||||
{ "east", 0, -25200, "Chile/EasterIsland" },
|
||||
{ "east", 0, -21600, "Pacific/Easter" },
|
||||
{ "east", 0, -25200, "Pacific/Easter" },
|
||||
{ "eat", 0, 10800, "Africa/Khartoum" },
|
||||
{ "eat", 0, 10800, "Africa/Addis_Ababa" },
|
||||
{ "eat", 0, 10800, "Africa/Asmara" },
|
||||
@@ -729,8 +497,6 @@
|
||||
{ "eat", 0, 10800, "Indian/Antananarivo" },
|
||||
{ "eat", 0, 10800, "Indian/Comoro" },
|
||||
{ "eat", 0, 10800, "Indian/Mayotte" },
|
||||
{ "ect", 0, -18000, "America/Guayaquil" },
|
||||
{ "ect", 0, -18000, "Pacific/Galapagos" },
|
||||
{ "eddt", 1, -10800, "America/Iqaluit" },
|
||||
{ "edt", 1, -14400, "America/New_York" },
|
||||
{ "edt", 1, -14400, "America/Cancun" },
|
||||
@@ -764,6 +530,7 @@
|
||||
{ "eest", 1, 10800, "Asia/Amman" },
|
||||
{ "eest", 1, 10800, "Asia/Beirut" },
|
||||
{ "eest", 1, 10800, "Asia/Damascus" },
|
||||
{ "eest", 1, 10800, "Asia/Famagusta" },
|
||||
{ "eest", 1, 10800, "Asia/Gaza" },
|
||||
{ "eest", 1, 10800, "Asia/Hebron" },
|
||||
{ "eest", 1, 10800, "Asia/Istanbul" },
|
||||
@@ -788,13 +555,12 @@
|
||||
{ "eest", 1, 10800, "Europe/Warsaw" },
|
||||
{ "eest", 1, 10800, "Europe/Zaporozhye" },
|
||||
{ "eet", 0, 7200, "Europe/Helsinki" },
|
||||
{ "eet", 1, 10800, "Asia/Gaza" },
|
||||
{ "eet", 1, 10800, "Asia/Hebron" },
|
||||
{ "eet", 0, 7200, "Africa/Cairo" },
|
||||
{ "eet", 0, 7200, "Africa/Tripoli" },
|
||||
{ "eet", 0, 7200, "Asia/Amman" },
|
||||
{ "eet", 0, 7200, "Asia/Beirut" },
|
||||
{ "eet", 0, 7200, "Asia/Damascus" },
|
||||
{ "eet", 0, 7200, "Asia/Famagusta" },
|
||||
{ "eet", 0, 7200, "Asia/Gaza" },
|
||||
{ "eet", 0, 7200, "Asia/Hebron" },
|
||||
{ "eet", 0, 7200, "Asia/Istanbul" },
|
||||
@@ -818,9 +584,6 @@
|
||||
{ "eet", 0, 7200, "Europe/Vilnius" },
|
||||
{ "eet", 0, 7200, "Europe/Warsaw" },
|
||||
{ "eet", 0, 7200, "Europe/Zaporozhye" },
|
||||
{ "egst", 1, 0, "America/Scoresbysund" },
|
||||
{ "egt", 0, -3600, "America/Scoresbysund" },
|
||||
{ "ehdt", 1, -16200, "America/Santo_Domingo" },
|
||||
{ "emt", 0, -26248, "Chile/EasterIsland" },
|
||||
{ "emt", 0, -26248, "Pacific/Easter" },
|
||||
{ "ept", 1, -14400, "America/New_York" },
|
||||
@@ -881,25 +644,7 @@
|
||||
{ "ewt", 1, -14400, "America/Toronto" },
|
||||
{ "ewt", 1, -14400, "Canada/Eastern" },
|
||||
{ "ffmt", 0, -14660, "America/Martinique" },
|
||||
{ "fjst", 1, 46800, "Pacific/Fiji" },
|
||||
{ "fjt", 0, 43200, "Pacific/Fiji" },
|
||||
{ "fkst", 1, -7200, "Atlantic/Stanley" },
|
||||
{ "fkst", 0, -10800, "Atlantic/Stanley" },
|
||||
{ "fkst", 1, -10800, "Atlantic/Stanley" },
|
||||
{ "fkt", 0, -14400, "Atlantic/Stanley" },
|
||||
{ "fkt", 0, -10800, "Atlantic/Stanley" },
|
||||
{ "fmt", 0, -4056, "Atlantic/Madeira" },
|
||||
{ "fnst", 1, -3600, "America/Noronha" },
|
||||
{ "fnst", 1, -3600, "Brazil/DeNoronha" },
|
||||
{ "fnt", 0, -7200, "America/Noronha" },
|
||||
{ "fnt", 0, -7200, "Brazil/DeNoronha" },
|
||||
{ "galt", 0, -21600, "Pacific/Galapagos" },
|
||||
{ "gamt", 0, -32400, "Pacific/Gambier" },
|
||||
{ "gbgt", 0, -13500, "America/Guyana" },
|
||||
{ "gft", 0, -14400, "America/Cayenne" },
|
||||
{ "gft", 0, -10800, "America/Cayenne" },
|
||||
{ "ghst", 1, 1200, "Africa/Accra" },
|
||||
{ "gilt", 0, 43200, "Pacific/Tarawa" },
|
||||
{ "gmt", 0, 0, "Africa/Abidjan" },
|
||||
{ "gmt", 0, 0, "Africa/Accra" },
|
||||
{ "gmt", 0, 0, "Africa/Bamako" },
|
||||
@@ -927,16 +672,8 @@
|
||||
{ "gmt", 0, 0, "Europe/Jersey" },
|
||||
{ "gmt", 0, 0, "Europe/London" },
|
||||
{ "gmt", 0, 0, "GB" },
|
||||
{ "gst", 0, 14400, "Asia/Dubai" },
|
||||
{ "gst", 0, -7200, "Atlantic/South_Georgia" },
|
||||
{ "gst", 0, 14400, "Asia/Bahrain" },
|
||||
{ "gst", 0, 14400, "Asia/Muscat" },
|
||||
{ "gst", 0, 14400, "Asia/Qatar" },
|
||||
{ "gst", 0, 36000, "Pacific/Guam" },
|
||||
{ "gst", 0, 36000, "Pacific/Saipan" },
|
||||
{ "gyt", 0, -14400, "America/Guyana" },
|
||||
{ "gyt", 0, -10800, "America/Guyana" },
|
||||
{ "gyt", 0, -13500, "America/Guyana" },
|
||||
{ "hdt", 1, -34200, "Pacific/Honolulu" },
|
||||
{ "hdt", 1, -32400, "America/Adak" },
|
||||
{ "hdt", 1, -32400, "America/Atka" },
|
||||
@@ -951,95 +688,41 @@
|
||||
{ "hmt", 0, 21200, "Asia/Kolkata" },
|
||||
{ "hmt", 0, 5989, "Europe/Helsinki" },
|
||||
{ "hmt", 0, 5989, "Europe/Mariehamn" },
|
||||
{ "hovst", 1, 28800, "Asia/Hovd" },
|
||||
{ "hovt", 0, 25200, "Asia/Hovd" },
|
||||
{ "hovt", 0, 21600, "Asia/Hovd" },
|
||||
{ "hst", 0, -36000, "Pacific/Honolulu" },
|
||||
{ "hst", 0, -37800, "Pacific/Honolulu" },
|
||||
{ "hst", 0, -36000, "America/Adak" },
|
||||
{ "hst", 0, -36000, "America/Atka" },
|
||||
{ "hst", 0, -36000, "Pacific/Johnston" },
|
||||
{ "hst", 0, -37800, "Pacific/Johnston" },
|
||||
{ "ict", 0, 25200, "Asia/Bangkok" },
|
||||
{ "ict", 0, 25200, "Asia/Ho_Chi_Minh" },
|
||||
{ "ict", 0, 25200, "Asia/Phnom_Penh" },
|
||||
{ "ict", 0, 25200, "Asia/Saigon" },
|
||||
{ "ict", 0, 25200, "Asia/Vientiane" },
|
||||
{ "iddt", 1, 14400, "Asia/Jerusalem" },
|
||||
{ "iddt", 1, 14400, "Asia/Tel_Aviv" },
|
||||
{ "idt", 1, 10800, "Asia/Jerusalem" },
|
||||
{ "idt", 1, 10800, "Asia/Gaza" },
|
||||
{ "idt", 1, 10800, "Asia/Hebron" },
|
||||
{ "idt", 1, 10800, "Asia/Tel_Aviv" },
|
||||
{ "idt", 0, 28800, "Asia/Ho_Chi_Minh" },
|
||||
{ "idt", 0, 28800, "Asia/Saigon" },
|
||||
{ "ihst", 1, 21600, "Asia/Colombo" },
|
||||
{ "imt", 0, 25025, "Asia/Irkutsk" },
|
||||
{ "imt", 0, 7016, "Asia/Istanbul" },
|
||||
{ "imt", 0, 7016, "Europe/Istanbul" },
|
||||
{ "imt", 0, 7016, "Europe/Sofia" },
|
||||
{ "iot", 0, 21600, "Indian/Chagos" },
|
||||
{ "iot", 0, 18000, "Indian/Chagos" },
|
||||
{ "irdt", 1, 16200, "Asia/Tehran" },
|
||||
{ "irdt", 1, 18000, "Asia/Tehran" },
|
||||
{ "irst", 0, 12600, "Asia/Tehran" },
|
||||
{ "irst", 0, 14400, "Asia/Tehran" },
|
||||
{ "isst", 1, 0, "Atlantic/Reykjavik" },
|
||||
{ "ist", 0, 7200, "Asia/Jerusalem" },
|
||||
{ "ist", 0, -3600, "Atlantic/Reykjavik" },
|
||||
{ "ist", 0, 19800, "Asia/Calcutta" },
|
||||
{ "ist", 0, 19800, "Asia/Colombo" },
|
||||
{ "ist", 0, 19800, "Asia/Dacca" },
|
||||
{ "ist", 0, 19800, "Asia/Dhaka" },
|
||||
{ "ist", 0, 19800, "Asia/Karachi" },
|
||||
{ "ist", 0, 19800, "Asia/Kathmandu" },
|
||||
{ "ist", 0, 19800, "Asia/Katmandu" },
|
||||
{ "ist", 0, 19800, "Asia/Kolkata" },
|
||||
{ "ist", 0, 19800, "Asia/Thimbu" },
|
||||
{ "ist", 0, 19800, "Asia/Thimphu" },
|
||||
{ "ist", 1, 2079, "Europe/Dublin" },
|
||||
{ "ist", 1, 23400, "Asia/Calcutta" },
|
||||
{ "ist", 1, 23400, "Asia/Colombo" },
|
||||
{ "ist", 1, 23400, "Asia/Karachi" },
|
||||
{ "ist", 1, 23400, "Asia/Kolkata" },
|
||||
{ "ist", 0, 3600, "Europe/Dublin" },
|
||||
{ "ist", 1, 3600, "Europe/Dublin" },
|
||||
{ "ist", 0, 7200, "Asia/Gaza" },
|
||||
{ "ist", 0, 7200, "Asia/Hebron" },
|
||||
{ "ist", 0, 7200, "Asia/Tel_Aviv" },
|
||||
{ "javt", 0, 26400, "Asia/Jakarta" },
|
||||
{ "jcst", 0, 32400, "Asia/Pyongyang" },
|
||||
{ "jcst", 0, 32400, "Asia/Seoul" },
|
||||
{ "jcst", 0, 32400, "Asia/Tokyo" },
|
||||
{ "jcst", 0, 32400, "ROK" },
|
||||
{ "jdt", 1, 36000, "Asia/Tokyo" },
|
||||
{ "jmt", 0, 8440, "Asia/Jerusalem" },
|
||||
{ "jmt", 0, 8440, "Asia/Tel_Aviv" },
|
||||
{ "jst", 0, 32400, "Asia/Tokyo" },
|
||||
{ "jst", 0, 32400, "Asia/Dili" },
|
||||
{ "jst", 0, 32400, "Asia/Ho_Chi_Minh" },
|
||||
{ "jst", 0, 32400, "Asia/Hong_Kong" },
|
||||
{ "jst", 0, 32400, "Asia/Jakarta" },
|
||||
{ "jst", 0, 32400, "Asia/Kuala_Lumpur" },
|
||||
{ "jst", 0, 32400, "Asia/Kuching" },
|
||||
{ "jst", 0, 32400, "Asia/Makassar" },
|
||||
{ "jst", 0, 32400, "Asia/Manila" },
|
||||
{ "jst", 0, 32400, "Asia/Pontianak" },
|
||||
{ "jst", 0, 32400, "Asia/Pyongyang" },
|
||||
{ "jst", 0, 32400, "Asia/Rangoon" },
|
||||
{ "jst", 0, 32400, "Asia/Saigon" },
|
||||
{ "jst", 0, 32400, "Asia/Seoul" },
|
||||
{ "jst", 0, 32400, "Asia/Singapore" },
|
||||
{ "jst", 0, 32400, "Asia/Taipei" },
|
||||
{ "jst", 0, 32400, "Asia/Ujung_Pandang" },
|
||||
{ "jst", 0, 32400, "Asia/Yangon" },
|
||||
{ "jst", 0, 32400, "Pacific/Bougainville" },
|
||||
{ "jst", 0, 32400, "Pacific/Nauru" },
|
||||
{ "jst", 0, 32400, "ROC" },
|
||||
{ "jst", 0, 32400, "ROK" },
|
||||
{ "jwst", 0, 28800, "Asia/Taipei" },
|
||||
{ "jwst", 0, 28800, "ROC" },
|
||||
{ "kart", 0, 18000, "Asia/Karachi" },
|
||||
{ "kdt", 1, 36000, "Asia/Seoul" },
|
||||
{ "kdt", 1, 34200, "Asia/Seoul" },
|
||||
{ "kdt", 1, 34200, "ROK" },
|
||||
@@ -1048,40 +731,13 @@
|
||||
{ "kmt", 0, -18431, "America/Grand_Turk" },
|
||||
{ "kmt", 0, -18431, "America/Jamaica" },
|
||||
{ "kmt", 0, 7324, "Europe/Kiev" },
|
||||
{ "kost", 0, 43200, "Pacific/Kosrae" },
|
||||
{ "kost", 0, 39600, "Pacific/Kosrae" },
|
||||
{ "kst", 0, 30600, "Asia/Seoul" },
|
||||
{ "kst", 0, 32400, "Asia/Pyongyang" },
|
||||
{ "kst", 0, 32400, "Asia/Seoul" },
|
||||
{ "kst", 0, 30600, "Asia/Pyongyang" },
|
||||
{ "kst", 0, 30600, "ROK" },
|
||||
{ "kst", 0, 32400, "ROK" },
|
||||
{ "kwat", 0, -43200, "Pacific/Kwajalein" },
|
||||
{ "lhdt", 1, 39600, "Australia/LHI" },
|
||||
{ "lhdt", 1, 39600, "Australia/Lord_Howe" },
|
||||
{ "lhdt", 1, 41400, "Australia/LHI" },
|
||||
{ "lhdt", 1, 41400, "Australia/Lord_Howe" },
|
||||
{ "lhst", 0, 37800, "Australia/Lord_Howe" },
|
||||
{ "lhst", 0, 37800, "Australia/LHI" },
|
||||
{ "lint", 0, 50400, "Pacific/Kiritimati" },
|
||||
{ "lint", 0, -36000, "Pacific/Kiritimati" },
|
||||
{ "lint", 0, -38400, "Pacific/Kiritimati" },
|
||||
{ "lkt", 0, 23400, "Asia/Colombo" },
|
||||
{ "lkt", 0, 21600, "Asia/Colombo" },
|
||||
{ "lrt", 0, -2670, "Africa/Monrovia" },
|
||||
{ "lst", 1, 9394, "Europe/Riga" },
|
||||
{ "madmt", 1, 3600, "Atlantic/Madeira" },
|
||||
{ "madst", 1, 0, "Atlantic/Madeira" },
|
||||
{ "madt", 0, -3600, "Atlantic/Madeira" },
|
||||
{ "malst", 1, 26400, "Asia/Singapore" },
|
||||
{ "malst", 1, 26400, "Asia/Kuala_Lumpur" },
|
||||
{ "malt", 0, 27000, "Asia/Singapore" },
|
||||
{ "malt", 0, 25200, "Asia/Singapore" },
|
||||
{ "malt", 0, 26400, "Asia/Singapore" },
|
||||
{ "malt", 0, 25200, "Asia/Kuala_Lumpur" },
|
||||
{ "malt", 0, 26400, "Asia/Kuala_Lumpur" },
|
||||
{ "malt", 0, 27000, "Asia/Kuala_Lumpur" },
|
||||
{ "mart", 0, -34200, "Pacific/Marquesas" },
|
||||
{ "mddt", 1, -18000, "America/Cambridge_Bay" },
|
||||
{ "mddt", 1, -18000, "America/Yellowknife" },
|
||||
{ "mdst", 1, 16279, "Europe/Moscow" },
|
||||
@@ -1103,33 +759,22 @@
|
||||
{ "mdt", 1, -21600, "America/Shiprock" },
|
||||
{ "mdt", 1, -21600, "America/Swift_Current" },
|
||||
{ "mdt", 1, -21600, "America/Yellowknife" },
|
||||
{ "mdt", 1, -21600, "Canada/East-Saskatchewan" },
|
||||
{ "mdt", 1, -21600, "Canada/Mountain" },
|
||||
{ "mdt", 1, -21600, "Canada/Saskatchewan" },
|
||||
{ "mdt", 1, -21600, "Mexico/BajaSur" },
|
||||
{ "mest", 1, 7200, "MET" },
|
||||
{ "met", 0, 3600, "MET" },
|
||||
{ "mht", 0, 43200, "Pacific/Kwajalein" },
|
||||
{ "mht", 0, 39600, "Pacific/Kwajalein" },
|
||||
{ "mht", 0, 39600, "Pacific/Majuro" },
|
||||
{ "mht", 0, 43200, "Pacific/Majuro" },
|
||||
{ "mist", 0, 39600, "Antarctica/Macquarie" },
|
||||
{ "mmt", 0, 9017, "Europe/Moscow" },
|
||||
{ "mmt", 0, 9079, "Europe/Moscow" },
|
||||
{ "mmt", 0, -13484, "America/Montevideo" },
|
||||
{ "mmt", 0, -20712, "America/Managua" },
|
||||
{ "mmt", 0, -2588, "Africa/Monrovia" },
|
||||
{ "mmt", 0, -2670, "Africa/Monrovia" },
|
||||
{ "mmt", 0, 17640, "Indian/Maldives" },
|
||||
{ "mmt", 0, 19172, "Asia/Colombo" },
|
||||
{ "mmt", 0, 23400, "Asia/Rangoon" },
|
||||
{ "mmt", 0, 23400, "Asia/Yangon" },
|
||||
{ "mmt", 0, 19270, "Asia/Calcutta" },
|
||||
{ "mmt", 0, 19270, "Asia/Kolkata" },
|
||||
{ "mmt", 0, 28656, "Asia/Makassar" },
|
||||
{ "mmt", 0, 28656, "Asia/Ujung_Pandang" },
|
||||
{ "mmt", 0, 6600, "Europe/Minsk" },
|
||||
{ "most", 1, 32400, "Asia/Macao" },
|
||||
{ "most", 1, 32400, "Asia/Macau" },
|
||||
{ "mot", 0, 28800, "Asia/Macao" },
|
||||
{ "mot", 0, 28800, "Asia/Macau" },
|
||||
{ "mpt", 1, -21600, "America/Denver" },
|
||||
{ "mpt", 1, -21600, "America/Boise" },
|
||||
{ "mpt", 1, -21600, "America/Cambridge_Bay" },
|
||||
@@ -1141,7 +786,6 @@
|
||||
{ "mpt", 1, -21600, "America/Shiprock" },
|
||||
{ "mpt", 1, -21600, "America/Swift_Current" },
|
||||
{ "mpt", 1, -21600, "America/Yellowknife" },
|
||||
{ "mpt", 1, -21600, "Canada/East-Saskatchewan" },
|
||||
{ "mpt", 1, -21600, "Canada/Mountain" },
|
||||
{ "mpt", 1, -21600, "Canada/Saskatchewan" },
|
||||
{ "msd", 1, 14400, "Europe/Moscow" },
|
||||
@@ -1195,16 +839,12 @@
|
||||
{ "mst", 0, -25200, "America/Swift_Current" },
|
||||
{ "mst", 0, -25200, "America/Tijuana" },
|
||||
{ "mst", 0, -25200, "America/Yellowknife" },
|
||||
{ "mst", 0, -25200, "Canada/East-Saskatchewan" },
|
||||
{ "mst", 0, -25200, "Canada/Mountain" },
|
||||
{ "mst", 0, -25200, "Canada/Saskatchewan" },
|
||||
{ "mst", 0, -25200, "Mexico/BajaNorte" },
|
||||
{ "mst", 0, -25200, "Mexico/BajaSur" },
|
||||
{ "mst", 0, -25200, "Mexico/General" },
|
||||
{ "mst", 1, 12679, "Europe/Moscow" },
|
||||
{ "must", 1, 18000, "Indian/Mauritius" },
|
||||
{ "mut", 0, 14400, "Indian/Mauritius" },
|
||||
{ "mvt", 0, 18000, "Indian/Maldives" },
|
||||
{ "mwt", 1, -21600, "America/Denver" },
|
||||
{ "mwt", 1, -21600, "America/Boise" },
|
||||
{ "mwt", 1, -21600, "America/Cambridge_Bay" },
|
||||
@@ -1217,13 +857,8 @@
|
||||
{ "mwt", 1, -21600, "America/Shiprock" },
|
||||
{ "mwt", 1, -21600, "America/Swift_Current" },
|
||||
{ "mwt", 1, -21600, "America/Yellowknife" },
|
||||
{ "mwt", 1, -21600, "Canada/East-Saskatchewan" },
|
||||
{ "mwt", 1, -21600, "Canada/Mountain" },
|
||||
{ "mwt", 1, -21600, "Canada/Saskatchewan" },
|
||||
{ "myt", 0, 28800, "Asia/Kuala_Lumpur" },
|
||||
{ "myt", 0, 28800, "Asia/Kuching" },
|
||||
{ "ncst", 1, 43200, "Pacific/Noumea" },
|
||||
{ "nct", 0, 39600, "Pacific/Noumea" },
|
||||
{ "nddt", 1, -5400, "America/St_Johns" },
|
||||
{ "nddt", 1, -5400, "Canada/Newfoundland" },
|
||||
{ "ndt", 1, -9052, "America/St_Johns" },
|
||||
@@ -1232,23 +867,12 @@
|
||||
{ "ndt", 1, -9000, "Canada/Newfoundland" },
|
||||
{ "ndt", 1, -9052, "America/Goose_Bay" },
|
||||
{ "ndt", 1, -9052, "Canada/Newfoundland" },
|
||||
{ "negt", 0, -12600, "America/Paramaribo" },
|
||||
{ "nest", 1, 4800, "Europe/Amsterdam" },
|
||||
{ "net", 0, 1200, "Europe/Amsterdam" },
|
||||
{ "nfst", 1, 45000, "Pacific/Norfolk" },
|
||||
{ "nft", 0, 41400, "Pacific/Norfolk" },
|
||||
{ "nft", 0, 39600, "Pacific/Norfolk" },
|
||||
{ "nmt", 0, 40320, "Pacific/Norfolk" },
|
||||
{ "npt", 1, -9000, "America/St_Johns" },
|
||||
{ "npt", 0, 20700, "Asia/Katmandu" },
|
||||
{ "npt", 1, -36000, "America/Adak" },
|
||||
{ "npt", 1, -36000, "America/Atka" },
|
||||
{ "npt", 1, -36000, "America/Nome" },
|
||||
{ "npt", 1, -9000, "America/Goose_Bay" },
|
||||
{ "npt", 1, -9000, "Canada/Newfoundland" },
|
||||
{ "npt", 0, 20700, "Asia/Kathmandu" },
|
||||
{ "nrt", 0, 43200, "Pacific/Nauru" },
|
||||
{ "nrt", 0, 41400, "Pacific/Nauru" },
|
||||
{ "nst", 0, -12600, "America/St_Johns" },
|
||||
{ "nst", 0, -12652, "America/St_Johns" },
|
||||
{ "nst", 1, 4772, "Europe/Amsterdam" },
|
||||
@@ -1259,12 +883,6 @@
|
||||
{ "nst", 0, -39600, "America/Adak" },
|
||||
{ "nst", 0, -39600, "America/Atka" },
|
||||
{ "nst", 0, -39600, "America/Nome" },
|
||||
{ "nst", 0, -39600, "Pacific/Midway" },
|
||||
{ "nst", 0, -39600, "Pacific/Pago_Pago" },
|
||||
{ "nst", 0, -39600, "Pacific/Samoa" },
|
||||
{ "nut", 0, -39600, "Pacific/Niue" },
|
||||
{ "nut", 0, -40800, "Pacific/Niue" },
|
||||
{ "nut", 0, -41400, "Pacific/Niue" },
|
||||
{ "nwt", 1, -9000, "America/St_Johns" },
|
||||
{ "nwt", 1, -36000, "America/Adak" },
|
||||
{ "nwt", 1, -36000, "America/Atka" },
|
||||
@@ -1308,22 +926,12 @@
|
||||
{ "pdt", 1, -25200, "Canada/Pacific" },
|
||||
{ "pdt", 1, -25200, "Canada/Yukon" },
|
||||
{ "pdt", 1, -25200, "Mexico/BajaNorte" },
|
||||
{ "pest", 1, -14400, "America/Lima" },
|
||||
{ "pet", 0, -18000, "America/Lima" },
|
||||
{ "pgt", 0, 36000, "Pacific/Bougainville" },
|
||||
{ "pgt", 0, 36000, "Pacific/Port_Moresby" },
|
||||
{ "phot", 0, 46800, "Pacific/Enderbury" },
|
||||
{ "phot", 0, -39600, "Pacific/Enderbury" },
|
||||
{ "phot", 0, -43200, "Pacific/Enderbury" },
|
||||
{ "phst", 1, 32400, "Asia/Manila" },
|
||||
{ "pht", 0, 28800, "Asia/Manila" },
|
||||
{ "pkst", 1, 21600, "Asia/Karachi" },
|
||||
{ "pkt", 0, 18000, "Asia/Karachi" },
|
||||
{ "plmt", 0, 25590, "Asia/Ho_Chi_Minh" },
|
||||
{ "plmt", 0, 25590, "Asia/Saigon" },
|
||||
{ "pmdt", 1, -7200, "America/Miquelon" },
|
||||
{ "pmmt", 0, 35312, "Pacific/Bougainville" },
|
||||
{ "pmst", 0, -10800, "America/Miquelon" },
|
||||
{ "pmmt", 0, 35312, "Pacific/Port_Moresby" },
|
||||
{ "pmt", 0, -13236, "America/Paramaribo" },
|
||||
{ "pmt", 0, -13252, "America/Paramaribo" },
|
||||
{ "pmt", 0, 13505, "Asia/Yekaterinburg" },
|
||||
@@ -1334,9 +942,6 @@
|
||||
{ "pmt", 0, 561, "Africa/Tunis" },
|
||||
{ "pmt", 0, 561, "Europe/Monaco" },
|
||||
{ "pmt", 0, 561, "Europe/Paris" },
|
||||
{ "pnt", 0, -30600, "Pacific/Pitcairn" },
|
||||
{ "pont", 0, 39600, "Pacific/Pohnpei" },
|
||||
{ "pont", 0, 39600, "Pacific/Ponape" },
|
||||
{ "ppmt", 0, -17340, "America/Port-au-Prince" },
|
||||
{ "ppt", 1, -25200, "America/Los_Angeles" },
|
||||
{ "ppt", 1, -25200, "America/Dawson_Creek" },
|
||||
@@ -1372,7 +977,6 @@
|
||||
{ "pst", 0, -28800, "Canada/Yukon" },
|
||||
{ "pst", 0, -28800, "Mexico/BajaNorte" },
|
||||
{ "pst", 0, -28800, "Mexico/BajaSur" },
|
||||
{ "pst", 0, -28800, "Pacific/Pitcairn" },
|
||||
{ "pwt", 1, -25200, "America/Los_Angeles" },
|
||||
{ "pwt", 1, -25200, "America/Dawson_Creek" },
|
||||
{ "pwt", 1, -25200, "America/Ensenada" },
|
||||
@@ -1385,15 +989,10 @@
|
||||
{ "pwt", 1, -25200, "America/Vancouver" },
|
||||
{ "pwt", 1, -25200, "Canada/Pacific" },
|
||||
{ "pwt", 1, -25200, "Mexico/BajaNorte" },
|
||||
{ "pwt", 0, 32400, "Pacific/Palau" },
|
||||
{ "pyst", 1, -10800, "America/Asuncion" },
|
||||
{ "pyt", 0, -14400, "America/Asuncion" },
|
||||
{ "pyt", 0, -10800, "America/Asuncion" },
|
||||
{ "qmt", 0, -18840, "America/Guayaquil" },
|
||||
{ "ret", 0, 14400, "Indian/Reunion" },
|
||||
{ "rmt", 0, 5794, "Europe/Riga" },
|
||||
{ "rmt", 0, 23080, "Asia/Rangoon" },
|
||||
{ "rmt", 0, 23080, "Asia/Yangon" },
|
||||
{ "rmt", 0, 23087, "Asia/Rangoon" },
|
||||
{ "rmt", 0, 23087, "Asia/Yangon" },
|
||||
{ "rmt", 0, 2996, "Europe/Rome" },
|
||||
{ "rmt", 0, 2996, "Europe/San_Marino" },
|
||||
{ "rmt", 0, 2996, "Europe/Vatican" },
|
||||
@@ -1408,90 +1007,31 @@
|
||||
{ "sast", 0, 7200, "Africa/Maseru" },
|
||||
{ "sast", 0, 7200, "Africa/Mbabane" },
|
||||
{ "sast", 0, 7200, "Africa/Windhoek" },
|
||||
{ "sbt", 0, 39600, "Pacific/Guadalcanal" },
|
||||
{ "sct", 0, 14400, "Indian/Mahe" },
|
||||
{ "sdmt", 0, -16800, "America/Santo_Domingo" },
|
||||
{ "sdt", 1, -36000, "Pacific/Apia" },
|
||||
{ "set", 0, 3614, "Europe/Stockholm" },
|
||||
{ "sgt", 0, 28800, "Asia/Singapore" },
|
||||
{ "sgt", 0, 27000, "Asia/Singapore" },
|
||||
{ "sjmt", 0, -20173, "America/Costa_Rica" },
|
||||
{ "smt", 0, -13884, "Atlantic/Stanley" },
|
||||
{ "smt", 0, -16966, "America/Punta_Arenas" },
|
||||
{ "smt", 0, -16966, "America/Santiago" },
|
||||
{ "smt", 0, -16966, "Chile/Continental" },
|
||||
{ "smt", 0, 24925, "Asia/Kuala_Lumpur" },
|
||||
{ "smt", 0, 24925, "Asia/Singapore" },
|
||||
{ "smt", 0, 8160, "Europe/Simferopol" },
|
||||
{ "srt", 0, -10800, "America/Paramaribo" },
|
||||
{ "srt", 0, -12600, "America/Paramaribo" },
|
||||
{ "sst", 0, -39600, "Pacific/Samoa" },
|
||||
{ "sst", 0, -39600, "Pacific/Apia" },
|
||||
{ "sst", 0, -39600, "Pacific/Midway" },
|
||||
{ "sst", 0, -39600, "Pacific/Pago_Pago" },
|
||||
{ "swat", 0, 5400, "Africa/Windhoek" },
|
||||
{ "taht", 0, -36000, "Pacific/Tahiti" },
|
||||
{ "tbmt", 0, 10751, "Asia/Tbilisi" },
|
||||
{ "tkt", 0, -39600, "Pacific/Fakaofo" },
|
||||
{ "tkt", 0, 46800, "Pacific/Fakaofo" },
|
||||
{ "tlt", 0, 32400, "Asia/Dili" },
|
||||
{ "tlt", 0, 28800, "Asia/Dili" },
|
||||
{ "tmt", 0, 12344, "Asia/Tehran" },
|
||||
{ "tmt", 0, 5940, "Europe/Tallinn" },
|
||||
{ "tost", 1, 50400, "Pacific/Tongatapu" },
|
||||
{ "tot", 0, 46800, "Pacific/Tongatapu" },
|
||||
{ "tot", 0, 44400, "Pacific/Tongatapu" },
|
||||
{ "tvt", 0, 43200, "Pacific/Funafuti" },
|
||||
{ "uct", 0, 0, "Etc/UCT" },
|
||||
{ "ulast", 1, 32400, "Asia/Ulaanbaatar" },
|
||||
{ "ulast", 1, 32400, "Asia/Ulan_Bator" },
|
||||
{ "ulat", 0, 28800, "Asia/Ulaanbaatar" },
|
||||
{ "ulat", 0, 25200, "Asia/Ulaanbaatar" },
|
||||
{ "ulat", 0, 25200, "Asia/Choibalsan" },
|
||||
{ "ulat", 0, 25200, "Asia/Ulan_Bator" },
|
||||
{ "ulat", 0, 28800, "Asia/Choibalsan" },
|
||||
{ "ulat", 0, 28800, "Asia/Ulan_Bator" },
|
||||
{ "utc", 0, 0, "Etc/Universal" },
|
||||
{ "utc", 0, 0, "Etc/UTC" },
|
||||
{ "utc", 0, 0, "Etc/Zulu" },
|
||||
{ "utc", 0, 0, "UTC" },
|
||||
{ "utc", 0, 0, "UTC" },
|
||||
{ "uyhst", 1, -9000, "America/Montevideo" },
|
||||
{ "uyhst", 1, -10800, "America/Montevideo" },
|
||||
{ "uyst", 1, -7200, "America/Montevideo" },
|
||||
{ "uyt", 0, -10800, "America/Montevideo" },
|
||||
{ "uyt", 0, -12600, "America/Montevideo" },
|
||||
{ "vet", 0, -16200, "America/Caracas" },
|
||||
{ "vet", 0, -14400, "America/Caracas" },
|
||||
{ "vust", 1, 43200, "Pacific/Efate" },
|
||||
{ "vut", 0, 39600, "Pacific/Efate" },
|
||||
{ "wakt", 0, 43200, "Pacific/Wake" },
|
||||
{ "warst", 1, -10800, "America/Mendoza" },
|
||||
{ "warst", 1, -10800, "America/Argentina/Jujuy" },
|
||||
{ "warst", 1, -10800, "America/Argentina/Mendoza" },
|
||||
{ "warst", 1, -10800, "America/Argentina/San_Luis" },
|
||||
{ "warst", 1, -10800, "America/Jujuy" },
|
||||
{ "wart", 0, -14400, "America/Mendoza" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Catamarca" },
|
||||
{ "wart", 0, -14400, "America/Argentina/ComodRivadavia" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Cordoba" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Jujuy" },
|
||||
{ "wart", 0, -14400, "America/Argentina/La_Rioja" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Mendoza" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Rio_Gallegos" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Salta" },
|
||||
{ "wart", 0, -14400, "America/Argentina/San_Juan" },
|
||||
{ "wart", 0, -14400, "America/Argentina/San_Luis" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Tucuman" },
|
||||
{ "wart", 0, -14400, "America/Argentina/Ushuaia" },
|
||||
{ "wart", 0, -14400, "America/Catamarca" },
|
||||
{ "wart", 0, -14400, "America/Cordoba" },
|
||||
{ "wart", 0, -14400, "America/Jujuy" },
|
||||
{ "wart", 0, -14400, "America/Rosario" },
|
||||
{ "wast", 1, 7200, "Africa/Windhoek" },
|
||||
{ "wast", 1, 7200, "Africa/Ndjamena" },
|
||||
{ "wat", 0, 3600, "Africa/Brazzaville" },
|
||||
{ "wat", 0, -3600, "Africa/Bissau" },
|
||||
{ "wat", 0, -3600, "Africa/El_Aaiun" },
|
||||
{ "wat", 0, 3600, "Africa/Bangui" },
|
||||
{ "wat", 0, 3600, "Africa/Douala" },
|
||||
{ "wat", 0, 3600, "Africa/Kinshasa" },
|
||||
@@ -1539,29 +1079,14 @@
|
||||
{ "wet", 0, 0, "Europe/Luxembourg" },
|
||||
{ "wet", 0, 0, "Europe/Madrid" },
|
||||
{ "wet", 0, 0, "Europe/Monaco" },
|
||||
{ "wft", 0, 43200, "Pacific/Wallis" },
|
||||
{ "wgst", 1, -7200, "America/Godthab" },
|
||||
{ "wgst", 1, -7200, "America/Danmarkshavn" },
|
||||
{ "wgt", 0, -10800, "America/Godthab" },
|
||||
{ "wgt", 0, -10800, "America/Danmarkshavn" },
|
||||
{ "wib", 0, 25200, "Asia/Jakarta" },
|
||||
{ "wib", 0, 25200, "Asia/Pontianak" },
|
||||
{ "wib", 0, 27000, "Asia/Jakarta" },
|
||||
{ "wib", 0, 27000, "Asia/Pontianak" },
|
||||
{ "wib", 0, 28800, "Asia/Jakarta" },
|
||||
{ "wib", 0, 28800, "Asia/Pontianak" },
|
||||
{ "wita", 0, 28800, "Asia/Dili" },
|
||||
{ "wita", 0, 28800, "Asia/Makassar" },
|
||||
{ "wita", 0, 28800, "Asia/Pontianak" },
|
||||
{ "wita", 0, 28800, "Asia/Ujung_Pandang" },
|
||||
{ "wit", 0, 32400, "Asia/Jayapura" },
|
||||
{ "wmt", 0, 5040, "Europe/Vilnius" },
|
||||
{ "wmt", 0, 5040, "Europe/Warsaw" },
|
||||
{ "wsdt", 1, 50400, "Pacific/Apia" },
|
||||
{ "wsst", 0, -41400, "Pacific/Apia" },
|
||||
{ "wsst", 0, 46800, "Pacific/Apia" },
|
||||
{ "xjt", 0, 21600, "Asia/Kashgar" },
|
||||
{ "xjt", 0, 21600, "Asia/Urumqi" },
|
||||
{ "yddt", 1, -25200, "America/Dawson" },
|
||||
{ "yddt", 1, -25200, "America/Whitehorse" },
|
||||
{ "yddt", 1, -25200, "Canada/Yukon" },
|
||||
|
||||
@@ -52,13 +52,6 @@ Array
|
||||
[comments] => %s
|
||||
)
|
||||
Array
|
||||
(
|
||||
[country_code] => %s
|
||||
[latitude] => %f
|
||||
[longitude] => %f
|
||||
[comments] =>
|
||||
)
|
||||
Array
|
||||
(
|
||||
[country_code] => %s
|
||||
[latitude] => %f
|
||||
|
||||
@@ -29,22 +29,22 @@ string(5) "array"
|
||||
int(%d)
|
||||
|
||||
-- Format a sample entry --
|
||||
array(17) {
|
||||
array(12) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(18) "America/Porto_Acre"
|
||||
string(18) "Australia/Adelaide"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(18) "Australia/Adelaide"
|
||||
}
|
||||
@@ -53,36 +53,36 @@ array(17) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(18) "Australia/Adelaide"
|
||||
string(21) "Australia/Broken_Hill"
|
||||
}
|
||||
[3]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(16) "America/Eirunepe"
|
||||
string(16) "Australia/Darwin"
|
||||
}
|
||||
[4]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(18) "America/Rio_Branco"
|
||||
string(15) "Australia/North"
|
||||
}
|
||||
[5]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(11) "Brazil/Acre"
|
||||
string(15) "Australia/South"
|
||||
}
|
||||
[6]=>
|
||||
array(3) {
|
||||
@@ -91,81 +91,36 @@ array(17) {
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(21) "Australia/Broken_Hill"
|
||||
string(20) "Australia/Yancowinna"
|
||||
}
|
||||
[7]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(16) "Australia/Darwin"
|
||||
string(21) "Australia/Broken_Hill"
|
||||
}
|
||||
[8]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/North"
|
||||
string(16) "Australia/Darwin"
|
||||
}
|
||||
[9]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/South"
|
||||
string(15) "Australia/North"
|
||||
}
|
||||
[10]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(20) "Australia/Yancowinna"
|
||||
}
|
||||
[11]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(13) "Asia/Jayapura"
|
||||
}
|
||||
[12]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(21) "Australia/Broken_Hill"
|
||||
}
|
||||
[13]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(16) "Australia/Darwin"
|
||||
}
|
||||
[14]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/North"
|
||||
}
|
||||
[15]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
@@ -174,7 +129,7 @@ array(17) {
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/South"
|
||||
}
|
||||
[16]=>
|
||||
[11]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
|
||||
@@ -5,7 +5,7 @@ date.timezone=Asia/Singapore
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
print strtotime('2008-05-23 00:00:00 SGT');
|
||||
print strtotime('2008-05-23 00:00:00 +08');
|
||||
print "\n";
|
||||
print strtotime('2008-05-23 00:00:00');
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ object(DateInterval)#%d (16) {
|
||||
["special_amount"]=>
|
||||
int(-1)
|
||||
["have_weekday_relative"]=>
|
||||
int(9)
|
||||
int(%d)
|
||||
["have_special_relative"]=>
|
||||
int(0)
|
||||
["f"]=>
|
||||
|
||||
@@ -26,25 +26,25 @@ var_dump( $abbr["acst"] );
|
||||
--EXPECTF--
|
||||
*** Testing timezone_abbreviations_list() : basic functionality ***
|
||||
string(5) "array"
|
||||
int(%d)
|
||||
int(142)
|
||||
|
||||
-- Format a sample entry --
|
||||
array(17) {
|
||||
array(12) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(18) "America/Porto_Acre"
|
||||
string(18) "Australia/Adelaide"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(18) "Australia/Adelaide"
|
||||
}
|
||||
@@ -53,36 +53,36 @@ array(17) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(18) "Australia/Adelaide"
|
||||
string(21) "Australia/Broken_Hill"
|
||||
}
|
||||
[3]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(16) "America/Eirunepe"
|
||||
string(16) "Australia/Darwin"
|
||||
}
|
||||
[4]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(18) "America/Rio_Branco"
|
||||
string(15) "Australia/North"
|
||||
}
|
||||
[5]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(true)
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(-14400)
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(11) "Brazil/Acre"
|
||||
string(15) "Australia/South"
|
||||
}
|
||||
[6]=>
|
||||
array(3) {
|
||||
@@ -91,81 +91,36 @@ array(17) {
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(21) "Australia/Broken_Hill"
|
||||
string(20) "Australia/Yancowinna"
|
||||
}
|
||||
[7]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(16) "Australia/Darwin"
|
||||
string(21) "Australia/Broken_Hill"
|
||||
}
|
||||
[8]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/North"
|
||||
string(16) "Australia/Darwin"
|
||||
}
|
||||
[9]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/South"
|
||||
string(15) "Australia/North"
|
||||
}
|
||||
[10]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(32400)
|
||||
["timezone_id"]=>
|
||||
string(20) "Australia/Yancowinna"
|
||||
}
|
||||
[11]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(13) "Asia/Jayapura"
|
||||
}
|
||||
[12]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(21) "Australia/Broken_Hill"
|
||||
}
|
||||
[13]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(16) "Australia/Darwin"
|
||||
}
|
||||
[14]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
["offset"]=>
|
||||
int(34200)
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/North"
|
||||
}
|
||||
[15]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
@@ -174,7 +129,7 @@ array(17) {
|
||||
["timezone_id"]=>
|
||||
string(15) "Australia/South"
|
||||
}
|
||||
[16]=>
|
||||
[11]=>
|
||||
array(3) {
|
||||
["dst"]=>
|
||||
bool(false)
|
||||
|
||||
@@ -24,7 +24,6 @@ var_dump( timezone_name_from_abbr("EDT") );
|
||||
echo "-- Lookup with name and offset--\n";
|
||||
var_dump( timezone_name_from_abbr("ADT", -10800) );
|
||||
var_dump( timezone_name_from_abbr("ADT", 14400) );
|
||||
var_dump( timezone_name_from_abbr("AMST", -10800) );
|
||||
|
||||
echo "-- Tests without valid name - uses gmtOffset and isdst to find match --\n";
|
||||
var_dump( timezone_name_from_abbr("", 3600, 1) );
|
||||
@@ -47,8 +46,7 @@ string(13) "Europe/Berlin"
|
||||
string(16) "America/New_York"
|
||||
-- Lookup with name and offset--
|
||||
string(15) "America/Halifax"
|
||||
string(12) "Asia/Baghdad"
|
||||
string(17) "America/Boa_Vista"
|
||||
string(15) "America/Halifax"
|
||||
-- Tests without valid name - uses gmtOffset and isdst to find match --
|
||||
string(13) "Europe/London"
|
||||
string(17) "America/Sao_Paulo"
|
||||
|
||||
@@ -323,7 +323,6 @@ PHP_MINFO_FUNCTION(enchant)
|
||||
#elif defined(HAVE_ENCHANT_BROKER_SET_PARAM)
|
||||
php_info_print_table_row(2, "Libenchant Version", "1.5.0 or later");
|
||||
#endif
|
||||
php_info_print_table_row(2, "Revision", "$Id$");
|
||||
php_info_print_table_end();
|
||||
|
||||
php_info_print_table_start();
|
||||
@@ -483,6 +482,11 @@ PHP_FUNCTION(enchant_broker_get_dict_path)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (value == NULL) {
|
||||
php_error_docref(NULL, E_WARNING, "dict_path not set");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
RETURN_STRING(value);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
extern zend_module_entry enchant_module_entry;
|
||||
#define phpext_enchant_ptr &enchant_module_entry
|
||||
|
||||
#define PHP_ENCHANT_VERSION "1.1.0"
|
||||
#define PHP_ENCHANT_VERSION PHP_VERSION
|
||||
|
||||
#ifdef PHP_WIN32
|
||||
#define PHP_ENCHANT_API __declspec(dllexport)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #53070 (enchant_broker_get_path crashes if no path is set)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if(!extension_loaded('enchant')) die('skip, enchant not loader');
|
||||
if (!is_resource(enchant_broker_init())) {die("skip, resource dont load\n");}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$broker = enchant_broker_init();
|
||||
var_dump(enchant_broker_get_dict_path($broker, ENCHANT_MYSPELL));
|
||||
var_dump(enchant_broker_get_dict_path($broker, ENCHANT_ISPELL));
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
||||
Warning: enchant_broker_get_dict_path(): dict_path not set in %s on line %d
|
||||
bool(false)
|
||||
|
||||
Warning: enchant_broker_get_dict_path(): dict_path not set in %s on line %d
|
||||
bool(false)
|
||||
+1
-1
@@ -22,7 +22,7 @@
|
||||
#if HAVE_EXIF
|
||||
|
||||
#include "php_version.h"
|
||||
#define PHP_EXIF_VERSION "1.4 $Id: 8bdc0c8f27c2c9dd1f7551f1f9fe3ab57a06a4b1 $"
|
||||
#define PHP_EXIF_VERSION PHP_VERSION
|
||||
|
||||
extern zend_module_entry exif_module_entry;
|
||||
#define phpext_exif_ptr &exif_module_entry
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
fileinfo
|
||||
Ilia Alshanetsky, Pierre Alain Joye, Scott MacVicar, Derick Rethans
|
||||
Ilia Alshanetsky, Pierre Alain Joye, Scott MacVicar, Derick Rethans, Anatol Belski
|
||||
@@ -377,6 +377,7 @@ ZEND_END_ARG_INFO()
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_imagewebp, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, im)
|
||||
ZEND_ARG_INFO(0, to)
|
||||
ZEND_ARG_INFO(0, quality)
|
||||
ZEND_END_ARG_INFO()
|
||||
#endif
|
||||
|
||||
|
||||
@@ -66,6 +66,16 @@ TODO:
|
||||
# include <emmintrin.h>
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_FLOORF
|
||||
# define HAVE_FLOORF 0
|
||||
#endif
|
||||
#if HAVE_FLOORF == 0
|
||||
# ifndef floorf
|
||||
/* float floorf(float x);*/
|
||||
# define floorf(x) ((float)(floor(x)))
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef MIN
|
||||
#define MIN(a,b) ((a)<(b)?(a):(b))
|
||||
#endif
|
||||
@@ -1709,13 +1719,28 @@ gdImagePtr gdImageScale(const gdImagePtr src, const unsigned int new_width, cons
|
||||
return im_scaled;
|
||||
}
|
||||
|
||||
static int gdRotatedImageSize(gdImagePtr src, const float angle, gdRectPtr bbox)
|
||||
{
|
||||
gdRect src_area;
|
||||
double m[6];
|
||||
|
||||
gdAffineRotate(m, angle);
|
||||
src_area.x = 0;
|
||||
src_area.y = 0;
|
||||
src_area.width = gdImageSX(src);
|
||||
src_area.height = gdImageSY(src);
|
||||
if (gdTransformAffineBoundingBox(&src_area, m, bbox) != GD_TRUE) {
|
||||
return GD_FALSE;
|
||||
}
|
||||
|
||||
return GD_TRUE;
|
||||
}
|
||||
|
||||
gdImagePtr gdImageRotateNearestNeighbour(gdImagePtr src, const float degrees, const int bgColor)
|
||||
{
|
||||
float _angle = ((float) (-degrees / 180.0f) * (float)M_PI);
|
||||
const int src_w = gdImageSX(src);
|
||||
const int src_h = gdImageSY(src);
|
||||
const unsigned int new_width = (unsigned int)(abs((int)(src_w * cos(_angle))) + abs((int)(src_h * sin(_angle))) + 0.5f);
|
||||
const unsigned int new_height = (unsigned int)(abs((int)(src_w * sin(_angle))) + abs((int)(src_h * cos(_angle))) + 0.5f);
|
||||
const gdFixed f_0_5 = gd_ftofx(0.5f);
|
||||
const gdFixed f_H = gd_itofx(src_h/2);
|
||||
const gdFixed f_W = gd_itofx(src_w/2);
|
||||
@@ -1726,6 +1751,12 @@ gdImagePtr gdImageRotateNearestNeighbour(gdImagePtr src, const float degrees, co
|
||||
unsigned int dst_offset_y = 0;
|
||||
unsigned int i;
|
||||
gdImagePtr dst;
|
||||
gdRect bbox;
|
||||
int new_height, new_width;
|
||||
|
||||
gdRotatedImageSize(src, degrees, &bbox);
|
||||
new_width = bbox.width;
|
||||
new_height = bbox.height;
|
||||
|
||||
if (new_width == 0 || new_height == 0) {
|
||||
return NULL;
|
||||
@@ -1768,8 +1799,6 @@ gdImagePtr gdImageRotateGeneric(gdImagePtr src, const float degrees, const int b
|
||||
const int angle_rounded = (int)floor(degrees * 100);
|
||||
const int src_w = gdImageSX(src);
|
||||
const int src_h = gdImageSY(src);
|
||||
const unsigned int new_width = (unsigned int)(abs((int)(src_w * cos(_angle))) + abs((int)(src_h * sin(_angle))) + 0.5f);
|
||||
const unsigned int new_height = (unsigned int)(abs((int)(src_w * sin(_angle))) + abs((int)(src_h * cos(_angle))) + 0.5f);
|
||||
const gdFixed f_0_5 = gd_ftofx(0.5f);
|
||||
const gdFixed f_H = gd_itofx(src_h/2);
|
||||
const gdFixed f_W = gd_itofx(src_w/2);
|
||||
@@ -1780,6 +1809,8 @@ gdImagePtr gdImageRotateGeneric(gdImagePtr src, const float degrees, const int b
|
||||
unsigned int dst_offset_y = 0;
|
||||
unsigned int i;
|
||||
gdImagePtr dst;
|
||||
int new_width, new_height;
|
||||
gdRect bbox;
|
||||
|
||||
const gdFixed f_slop_y = f_sin;
|
||||
const gdFixed f_slop_x = f_cos;
|
||||
@@ -1792,6 +1823,10 @@ gdImagePtr gdImageRotateGeneric(gdImagePtr src, const float degrees, const int b
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gdRotatedImageSize(src, degrees, &bbox);
|
||||
new_width = bbox.width;
|
||||
new_height = bbox.height;
|
||||
|
||||
dst = gdImageCreateTrueColor(new_width, new_height);
|
||||
if (!dst) {
|
||||
return NULL;
|
||||
@@ -1831,8 +1866,7 @@ gdImagePtr gdImageRotateBilinear(gdImagePtr src, const float degrees, const int
|
||||
float _angle = (float)((- degrees / 180.0f) * M_PI);
|
||||
const unsigned int src_w = gdImageSX(src);
|
||||
const unsigned int src_h = gdImageSY(src);
|
||||
unsigned int new_width = abs((int)(src_w*cos(_angle))) + abs((int)(src_h*sin(_angle) + 0.5f));
|
||||
unsigned int new_height = abs((int)(src_w*sin(_angle))) + abs((int)(src_h*cos(_angle) + 0.5f));
|
||||
unsigned int new_width, new_height;
|
||||
const gdFixed f_0_5 = gd_ftofx(0.5f);
|
||||
const gdFixed f_H = gd_itofx(src_h/2);
|
||||
const gdFixed f_W = gd_itofx(src_w/2);
|
||||
@@ -1844,6 +1878,12 @@ gdImagePtr gdImageRotateBilinear(gdImagePtr src, const float degrees, const int
|
||||
unsigned int dst_offset_y = 0;
|
||||
unsigned int src_offset_x, src_offset_y;
|
||||
gdImagePtr dst;
|
||||
gdRect bbox;
|
||||
|
||||
gdRotatedImageSize(src, degrees, &bbox);
|
||||
|
||||
new_width = bbox.width;
|
||||
new_height = bbox.height;
|
||||
|
||||
dst = gdImageCreateTrueColor(new_width, new_height);
|
||||
if (dst == NULL) {
|
||||
@@ -1863,7 +1903,7 @@ gdImagePtr gdImageRotateBilinear(gdImagePtr src, const float degrees, const int
|
||||
const unsigned int m = gd_fxtoi(f_m);
|
||||
const unsigned int n = gd_fxtoi(f_n);
|
||||
|
||||
if ((m > 0) && (m < src_h - 1) && (n > 0) && (n < src_w - 1)) {
|
||||
if ((m >= 0) && (m < src_h - 1) && (n >= 0) && (n < src_w - 1)) {
|
||||
const gdFixed f_f = f_m - gd_itofx(m);
|
||||
const gdFixed f_g = f_n - gd_itofx(n);
|
||||
const gdFixed f_w1 = gd_mulfx(f_1-f_f, f_1-f_g);
|
||||
@@ -1871,11 +1911,6 @@ gdImagePtr gdImageRotateBilinear(gdImagePtr src, const float degrees, const int
|
||||
const gdFixed f_w3 = gd_mulfx(f_f, f_1-f_g);
|
||||
const gdFixed f_w4 = gd_mulfx(f_f, f_g);
|
||||
|
||||
if (n < src_w - 1) {
|
||||
src_offset_x = n + 1;
|
||||
src_offset_y = m;
|
||||
}
|
||||
|
||||
if (m < src_h-1) {
|
||||
src_offset_x = n;
|
||||
src_offset_y = m + 1;
|
||||
@@ -1890,13 +1925,13 @@ gdImagePtr gdImageRotateBilinear(gdImagePtr src, const float degrees, const int
|
||||
register int pixel2, pixel3, pixel4;
|
||||
|
||||
if (src_offset_y + 1 >= src_h) {
|
||||
pixel2 = bgColor;
|
||||
pixel3 = bgColor;
|
||||
pixel4 = bgColor;
|
||||
pixel2 = pixel1;
|
||||
pixel3 = pixel1;
|
||||
pixel4 = pixel1;
|
||||
} else if (src_offset_x + 1 >= src_w) {
|
||||
pixel2 = bgColor;
|
||||
pixel3 = bgColor;
|
||||
pixel4 = bgColor;
|
||||
pixel2 = pixel1;
|
||||
pixel3 = pixel1;
|
||||
pixel4 = pixel1;
|
||||
} else {
|
||||
pixel2 = src->tpixels[src_offset_y][src_offset_x + 1];
|
||||
pixel3 = src->tpixels[src_offset_y + 1][src_offset_x];
|
||||
@@ -1946,8 +1981,7 @@ gdImagePtr gdImageRotateBicubicFixed(gdImagePtr src, const float degrees, const
|
||||
const float _angle = (float)((- degrees / 180.0f) * M_PI);
|
||||
const int src_w = gdImageSX(src);
|
||||
const int src_h = gdImageSY(src);
|
||||
const unsigned int new_width = abs((int)(src_w*cos(_angle))) + abs((int)(src_h*sin(_angle) + 0.5f));
|
||||
const unsigned int new_height = abs((int)(src_w*sin(_angle))) + abs((int)(src_h*cos(_angle) + 0.5f));
|
||||
unsigned int new_width, new_height;
|
||||
const gdFixed f_0_5 = gd_ftofx(0.5f);
|
||||
const gdFixed f_H = gd_itofx(src_h/2);
|
||||
const gdFixed f_W = gd_itofx(src_w/2);
|
||||
@@ -1963,7 +1997,11 @@ gdImagePtr gdImageRotateBicubicFixed(gdImagePtr src, const float degrees, const
|
||||
unsigned int dst_offset_y = 0;
|
||||
unsigned int i;
|
||||
gdImagePtr dst;
|
||||
gdRect bbox;
|
||||
|
||||
gdRotatedImageSize(src, degrees, &bbox);
|
||||
new_width = bbox.width;
|
||||
new_height = bbox.height;
|
||||
dst = gdImageCreateTrueColor(new_width, new_height);
|
||||
|
||||
if (dst == NULL) {
|
||||
@@ -2206,8 +2244,11 @@ gdImagePtr gdImageRotateBicubicFixed(gdImagePtr src, const float degrees, const
|
||||
|
||||
gdImagePtr gdImageRotateInterpolated(const gdImagePtr src, const float angle, int bgcolor)
|
||||
{
|
||||
const int angle_rounded = (int)floor(angle * 100);
|
||||
|
||||
/* round to two decimals and keep the 100x multiplication to use it in the common square angles
|
||||
case later. Keep the two decimal precisions so smaller rotation steps can be done, useful for
|
||||
slow animations, f.e. */
|
||||
const int angle_rounded = fmod((int) floorf(angle * 100), 360 * 100);
|
||||
|
||||
if (bgcolor < 0) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -2224,6 +2265,18 @@ gdImagePtr gdImageRotateInterpolated(const gdImagePtr src, const float angle, in
|
||||
|
||||
/* no interpolation needed here */
|
||||
switch (angle_rounded) {
|
||||
case 0: {
|
||||
gdImagePtr dst = gdImageCreateTrueColor(src->sx, src->sy);
|
||||
if (dst == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
dst->transparent = src->transparent;
|
||||
dst->saveAlphaFlag = 1;
|
||||
dst->alphaBlendingFlag = gdEffectReplace;
|
||||
|
||||
gdImageCopy(dst, src, 0,0,0,0,src->sx,src->sy);
|
||||
return dst;
|
||||
}
|
||||
case -27000:
|
||||
case 9000:
|
||||
return gdImageRotate90(src, 0);
|
||||
|
||||
+4
-1
@@ -164,7 +164,10 @@ readwbmp (int (*getin) (void *in), void *in, Wbmp ** return_wbmp)
|
||||
}
|
||||
|
||||
if (skipheader (getin, in))
|
||||
return (-1);
|
||||
{
|
||||
gdFree (wbmp);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
||||
wbmp->width = getmbi (getin, in);
|
||||
|
||||
@@ -0,0 +1,179 @@
|
||||
--TEST--
|
||||
Bug #65148 (imagerotate may alter image dimensions)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('gd')) die('skip gd extension is not available');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$interpolations = array(
|
||||
'IMG_BELL' => IMG_BELL,
|
||||
'IMG_BESSEL' => IMG_BESSEL,
|
||||
'IMG_BICUBIC' => IMG_BICUBIC,
|
||||
'IMG_BICUBIC_FIXED' => IMG_BICUBIC_FIXED,
|
||||
'IMG_BILINEAR_FIXED' => IMG_BILINEAR_FIXED,
|
||||
'IMG_BLACKMAN' => IMG_BLACKMAN,
|
||||
'IMG_BOX' => IMG_BOX,
|
||||
'IMG_BSPLINE' => IMG_BSPLINE,
|
||||
'IMG_CATMULLROM' => IMG_CATMULLROM,
|
||||
'IMG_GAUSSIAN' => IMG_GAUSSIAN,
|
||||
'IMG_GENERALIZED_CUBIC' => IMG_GENERALIZED_CUBIC,
|
||||
'IMG_HERMITE' => IMG_HERMITE,
|
||||
'IMG_HAMMING' => IMG_HAMMING,
|
||||
'IMG_HANNING' => IMG_HANNING,
|
||||
'IMG_MITCHELL' => IMG_MITCHELL,
|
||||
'IMG_POWER' => IMG_POWER,
|
||||
'IMG_QUADRATIC' => IMG_QUADRATIC,
|
||||
'IMG_SINC' => IMG_SINC,
|
||||
'IMG_NEAREST_NEIGHBOUR' => IMG_NEAREST_NEIGHBOUR,
|
||||
'IMG_WEIGHTED4' => IMG_WEIGHTED4,
|
||||
'IMG_TRIANGLE' => IMG_TRIANGLE,
|
||||
);
|
||||
|
||||
$img = imagecreate(40, 20);
|
||||
$results = array();
|
||||
|
||||
foreach ($interpolations as $name => $interpolation) {
|
||||
imagesetinterpolation($img, $interpolation);
|
||||
$t = imagecolorallocatealpha($img, 0, 0, 0, 127);
|
||||
$imgr = imagerotate($img, -5, $t);
|
||||
$results[$name] = array('x' => imagesx($imgr), 'y' => imagesy($imgr));
|
||||
imagedestroy($imgr);
|
||||
}
|
||||
|
||||
imagedestroy($img);
|
||||
print_r($results);
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECT--
|
||||
Array
|
||||
(
|
||||
[IMG_BELL] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_BESSEL] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_BICUBIC] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_BICUBIC_FIXED] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_BILINEAR_FIXED] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_BLACKMAN] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_BOX] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_BSPLINE] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_CATMULLROM] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_GAUSSIAN] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_GENERALIZED_CUBIC] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_HERMITE] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_HAMMING] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_HANNING] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_MITCHELL] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_POWER] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_QUADRATIC] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_SINC] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_NEAREST_NEIGHBOUR] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_WEIGHTED4] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
[IMG_TRIANGLE] => Array
|
||||
(
|
||||
[x] => 40
|
||||
[y] => 23
|
||||
)
|
||||
|
||||
)
|
||||
===DONE===
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 739 B After Width: | Height: | Size: 741 B |
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #75437 Wrong reflection on imagewebp
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('reflection')) die('skip reflection not available');
|
||||
if (!extension_loaded('gd')) die('skip gd extension not available');
|
||||
if (!GD_BUNDLED && version_compare(GD_VERSION, '2.2.0', '<')) die("skip test requires GD 2.2.0 or higher");
|
||||
if (!function_exists('imagewebp')) die('skip WebP support not available');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$rf = new ReflectionFunction('imagewebp');
|
||||
var_dump($rf->getNumberOfParameters());
|
||||
var_dump($rf->getNumberOfRequiredParameters());
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECT--
|
||||
int(3)
|
||||
int(1)
|
||||
===DONE===
|
||||
@@ -53,7 +53,7 @@ ZEND_END_ARG_INFO()
|
||||
ZEND_BEGIN_ARG_INFO(arginfo_ibase_errcode, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_ibase_connect, 0, 0, 1)
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_ibase_connect, 0, 0, 0)
|
||||
ZEND_ARG_INFO(0, database)
|
||||
ZEND_ARG_INFO(0, username)
|
||||
ZEND_ARG_INFO(0, password)
|
||||
@@ -63,7 +63,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_ibase_connect, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, role)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_ibase_pconnect, 0, 0, 1)
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_ibase_pconnect, 0, 0, 0)
|
||||
ZEND_ARG_INFO(0, database)
|
||||
ZEND_ARG_INFO(0, username)
|
||||
ZEND_ARG_INFO(0, password)
|
||||
@@ -1030,7 +1030,7 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /*
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto resource ibase_connect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])
|
||||
/* {{{ proto resource ibase_connect([string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]]])
|
||||
Open a connection to an InterBase database */
|
||||
PHP_FUNCTION(ibase_connect)
|
||||
{
|
||||
@@ -1038,7 +1038,7 @@ PHP_FUNCTION(ibase_connect)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto resource ibase_pconnect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])
|
||||
/* {{{ proto resource ibase_pconnect([string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]]])
|
||||
Open a persistent connection to an InterBase database */
|
||||
PHP_FUNCTION(ibase_pconnect)
|
||||
{
|
||||
|
||||
@@ -411,7 +411,7 @@ static zend_bool php_converter_set_encoding(php_converter_object *objval,
|
||||
ZEND_BEGIN_ARG_INFO_EX(php_converter_set_encoding_arginfo, 0, ZEND_RETURN_VALUE, 1)
|
||||
ZEND_ARG_INFO(0, encoding)
|
||||
ZEND_END_ARG_INFO();
|
||||
static void php_converter_do_set_encoding(UConverter *cnv, INTERNAL_FUNCTION_PARAMETERS) {
|
||||
static void php_converter_do_set_encoding(UConverter **pcnv, INTERNAL_FUNCTION_PARAMETERS) {
|
||||
php_converter_object *objval = CONV_GET(getThis());
|
||||
char *enc;
|
||||
size_t enc_len;
|
||||
@@ -423,21 +423,21 @@ static void php_converter_do_set_encoding(UConverter *cnv, INTERNAL_FUNCTION_PAR
|
||||
}
|
||||
intl_errors_reset(&objval->error);
|
||||
|
||||
RETURN_BOOL(php_converter_set_encoding(objval, &(objval->src), enc, enc_len));
|
||||
RETURN_BOOL(php_converter_set_encoding(objval, pcnv, enc, enc_len));
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto bool UConverter::setSourceEncoding(string encoding) */
|
||||
static PHP_METHOD(UConverter, setSourceEncoding) {
|
||||
php_converter_object *objval = CONV_GET(getThis());
|
||||
php_converter_do_set_encoding(objval->src, INTERNAL_FUNCTION_PARAM_PASSTHRU);
|
||||
php_converter_do_set_encoding(&(objval->src), INTERNAL_FUNCTION_PARAM_PASSTHRU);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto bool UConverter::setDestinationEncoding(string encoding) */
|
||||
static PHP_METHOD(UConverter, setDestinationEncoding) {
|
||||
php_converter_object *objval = CONV_GET(getThis());
|
||||
php_converter_do_set_encoding(objval->dest, INTERNAL_FUNCTION_PARAM_PASSTHRU);
|
||||
php_converter_do_set_encoding(&(objval->dest), INTERNAL_FUNCTION_PARAM_PASSTHRU);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
@@ -78,4 +78,8 @@ extern zend_class_entry *Spoofchecker_ce_ptr;
|
||||
RETURN_FALSE; \
|
||||
} \
|
||||
|
||||
#if U_ICU_VERSION_MAJOR_NUM >= 58
|
||||
#define SPOOFCHECKER_DEFAULT_RESTRICTION_LEVEL USPOOF_HIGHLY_RESTRICTIVE
|
||||
#endif
|
||||
|
||||
#endif // #ifndef SPOOFCHECKER_CLASS_H
|
||||
@@ -43,12 +43,23 @@ PHP_METHOD(Spoofchecker, __construct)
|
||||
co->uspoof = uspoof_open(SPOOFCHECKER_ERROR_CODE_P(co));
|
||||
INTL_METHOD_CHECK_STATUS(co, "spoofchecker: unable to open ICU Spoof Checker");
|
||||
|
||||
#if U_ICU_VERSION_MAJOR_NUM >= 58
|
||||
/* TODO save it into the object for further suspiction check comparison. */
|
||||
/* ICU 58 removes WSC and MSC handling. However there are restriction
|
||||
levels as defined in
|
||||
http://www.unicode.org/reports/tr39/tr39-15.html#Restriction_Level_Detection
|
||||
and the default is high restrictive. In further, we might want to utilize
|
||||
uspoof_check2 APIs when it became stable, to use extended check result APIs.
|
||||
Subsequent changes in the unicode security algos are to be watched.*/
|
||||
uspoof_setRestrictionLevel(co->uspoof, SPOOFCHECKER_DEFAULT_RESTRICTION_LEVEL);
|
||||
#else
|
||||
/* Single-script enforcement is on by default. This fails for languages
|
||||
like Japanese that legally use multiple scripts within a single word,
|
||||
so we turn it off.
|
||||
*/
|
||||
checks = uspoof_getChecks(co->uspoof, SPOOFCHECKER_ERROR_CODE_P(co));
|
||||
uspoof_setChecks(co->uspoof, checks & ~USPOOF_SINGLE_SCRIPT, SPOOFCHECKER_ERROR_CODE_P(co));
|
||||
#endif
|
||||
zend_restore_error_handling(&error_handling);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
--TEST--
|
||||
IntlBreakIterator::getPartsIterator(): basic test
|
||||
IntlBreakIterator::getPartsIterator(): basic test, ICU <= 57.1
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('intl'))
|
||||
die('skip intl extension not enabled');
|
||||
if (version_compare(INTL_ICU_VERSION, '57.1') > 0) die('skip for ICU <= 57.1');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
ini_set("intl.error_level", E_WARNING);
|
||||
@@ -34,4 +36,4 @@ Array
|
||||
[2] => bar
|
||||
)
|
||||
int(0)
|
||||
==DONE==
|
||||
==DONE==
|
||||
@@ -0,0 +1,39 @@
|
||||
--TEST--
|
||||
IntlBreakIterator::getPartsIterator(): basic test, ICU >= 58.1
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('intl'))
|
||||
die('skip intl extension not enabled');
|
||||
if (version_compare(INTL_ICU_VERSION, '57.1') <= 0) die('skip for ICU >= 58.1');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
ini_set("intl.error_level", E_WARNING);
|
||||
ini_set("intl.default_locale", "pt_PT");
|
||||
|
||||
$bi = IntlBreakIterator::createWordInstance('pt');
|
||||
$pi = $bi->getPartsIterator();
|
||||
var_dump(get_class($pi));
|
||||
print_r(iterator_to_array($pi));
|
||||
|
||||
$bi->setText("foo bar");
|
||||
$pi = $bi->getPartsIterator();
|
||||
var_dump(get_class($pi->getBreakIterator()));
|
||||
print_r(iterator_to_array($pi));
|
||||
var_dump($pi->getRuleStatus());
|
||||
?>
|
||||
==DONE==
|
||||
--EXPECTF--
|
||||
string(17) "IntlPartsIterator"
|
||||
Array
|
||||
(
|
||||
)
|
||||
string(26) "IntlRuleBasedBreakIterator"
|
||||
Array
|
||||
(
|
||||
[0] => foo
|
||||
[1] =>
|
||||
[2] => bar
|
||||
)
|
||||
int(%d)
|
||||
==DONE==
|
||||
@@ -1,9 +1,11 @@
|
||||
--TEST--
|
||||
IntlBreakIterator::preceding(): basic test
|
||||
IntlBreakIterator::preceding(): basic test, ICU <= 57.1
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('intl'))
|
||||
die('skip intl extension not enabled');
|
||||
if (version_compare(INTL_ICU_VERSION, '57.1') > 0) die('skip for ICU <= 57.1');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
ini_set("intl.error_level", E_WARNING);
|
||||
@@ -21,4 +23,4 @@ var_dump($bi->preceding(-1));
|
||||
int(4)
|
||||
int(21)
|
||||
int(0)
|
||||
==DONE==
|
||||
==DONE==
|
||||
@@ -0,0 +1,25 @@
|
||||
--TEST--
|
||||
IntlBreakIterator::preceding(): basic test, ICU >= 58.1
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('intl'))
|
||||
die('skip intl extension not enabled');
|
||||
if (version_compare(INTL_ICU_VERSION, '57.1') <= 0) die('skip for ICU >= 58.1');
|
||||
--FILE--
|
||||
<?php
|
||||
ini_set("intl.error_level", E_WARNING);
|
||||
ini_set("intl.default_locale", "pt_PT");
|
||||
|
||||
$bi = IntlBreakIterator::createWordInstance('pt');
|
||||
$bi->setText('foo bar trans zoo bee');
|
||||
|
||||
var_dump($bi->preceding(5));
|
||||
var_dump($bi->preceding(50));
|
||||
var_dump($bi->preceding(-1));
|
||||
?>
|
||||
==DONE==
|
||||
--EXPECTF--
|
||||
int(4)
|
||||
int(21)
|
||||
int(%i)
|
||||
==DONE==
|
||||
@@ -0,0 +1,53 @@
|
||||
--TEST--
|
||||
Bug #75317 (UConverter::setDestinationEncoding changes source instead of destinatination)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('intl')) die('skip intl extension is not available');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$utf8 = UConverter::getAliases('utf-8')[0];
|
||||
$utf16 = UConverter::getAliases('utf-16')[0];
|
||||
$utf32 = UConverter::getAliases('utf-32')[0];
|
||||
$latin1 = UConverter::getAliases('latin1')[0];
|
||||
|
||||
function printResult($actual, $expected) {
|
||||
var_dump($actual === $expected ? true : "expected: $expected, actual: $actual");
|
||||
}
|
||||
|
||||
// test default values
|
||||
$c = new UConverter();
|
||||
printResult($c->getDestinationEncoding(), $utf8);
|
||||
printResult($c->getSourceEncoding(), $utf8);
|
||||
|
||||
// test constructor args
|
||||
$c = new UConverter('utf-16', 'latin1');
|
||||
printResult($c->getDestinationEncoding(), $utf16);
|
||||
printResult($c->getSourceEncoding(), $latin1);
|
||||
|
||||
// test setters
|
||||
var_dump($c->setDestinationEncoding('utf-8'));
|
||||
var_dump($c->setSourceEncoding('utf-32'));
|
||||
printResult($c->getDestinationEncoding(), $utf8);
|
||||
printResult($c->getSourceEncoding(), $utf32);
|
||||
|
||||
// test invalid inputs dont change values
|
||||
var_dump($c->setDestinationEncoding('foobar') === false);
|
||||
var_dump($c->setSourceEncoding('foobar') === false);
|
||||
printResult($c->getDestinationEncoding(), $utf8);
|
||||
printResult($c->getSourceEncoding(), $utf32);
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
@@ -4,6 +4,7 @@ IntlDateFormatter: several forms of the calendar arg
|
||||
<?php
|
||||
if (!extension_loaded('intl')) die('skip intl extension not enabled'); ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '54.1') < 0) die('skip for ICU >= 54.1'); ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '58.1') >= 0) die('skip for ICU <= 57.1'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
ini_set("intl.error_level", E_WARNING);
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
--TEST--
|
||||
IntlDateFormatter: several forms of the calendar arg
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('intl')) die('skip intl extension not enabled'); ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '58.1') < 0) die('skip for ICU >= 58.1'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
ini_set("intl.error_level", E_WARNING);
|
||||
ini_set("intl.default_locale", "pt_PT");
|
||||
ini_set("date.timezone", 'Atlantic/Azores');
|
||||
|
||||
$ts = strtotime('2012-01-01 00:00:00 UTC');
|
||||
|
||||
$cal = new IntlGregorianCalendar('UTC', NULL);
|
||||
$df = new IntlDateFormatter('es_ES', 0, 0, NULL, $cal);
|
||||
echo $df->format($ts), "\n";
|
||||
|
||||
$cal = IntlCalendar::createInstance('UTC', 'en@calendar=islamic');
|
||||
$df = new IntlDateFormatter('es_ES', 0, 0, NULL, $cal);
|
||||
echo $df->format($ts), "\n";
|
||||
|
||||
//override calendar's timezone
|
||||
$cal = new IntlGregorianCalendar('UTC', NULL);
|
||||
$df = new IntlDateFormatter('es_ES', 0, 0, 'Europe/Madrid', $cal);
|
||||
echo $df->format($ts), "\n";
|
||||
|
||||
//default calendar is gregorian
|
||||
$df = new IntlDateFormatter('es_ES@calendar=islamic', 0, 0);
|
||||
echo $df->format($ts), "\n";
|
||||
|
||||
//try now with traditional
|
||||
$df = new IntlDateFormatter('es_ES@calendar=islamic', 0, 0, NULL, IntlDateFormatter::TRADITIONAL);
|
||||
echo $df->format($ts), "\n";
|
||||
|
||||
//the timezone can be overridden when not specifying a calendar
|
||||
$df = new IntlDateFormatter('es_ES@calendar=islamic', 0, 0, 'UTC', IntlDateFormatter::TRADITIONAL);
|
||||
echo $df->format($ts), "\n";
|
||||
|
||||
$df = new IntlDateFormatter('es_ES', 0, 0, 'UTC', 0);
|
||||
echo $df->format($ts), "\n";
|
||||
|
||||
?>
|
||||
==DONE==
|
||||
--EXPECTF--
|
||||
domingo%S 1 de enero de 2012, 0:00:00 (%siempo %sniversal %sordinado)
|
||||
domingo%S 8 de %safar de 1433, 0:00:00 (%siempo %sniversal %sordinado)
|
||||
domingo, 1 de enero de 2012, 1:00:00 (hora estándar de Europa central)
|
||||
sábado, 31 de diciembre de 2011 d. C., 23:00:00 (hora estándar de las Azores)
|
||||
sábado, 7 de %safar de 1433 AH, 23:00:00 (hora estándar de las Azores)
|
||||
domingo%S 8 de %safar de 1433 AH, 0:00:00 (%siempo %sniversal %sordinado)
|
||||
domingo%S 1 de enero de 2012, 0:00:00 (%siempo %sniversal %sordinado)
|
||||
==DONE==
|
||||
@@ -4,6 +4,7 @@ IntlDateFormatter: setCalendar()/getCalendar()/getCalendarObject()
|
||||
<?php
|
||||
if (!extension_loaded('intl')) die('skip intl extension not enabled'); ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '54.1') < 0) die('skip for ICU >= 54.1'); ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '58.1') >= 0) die('skip for ICU <= 57.1'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
ini_set("intl.error_level", E_WARNING);
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
--TEST--
|
||||
IntlDateFormatter: setCalendar()/getCalendar()/getCalendarObject()
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('intl')) die('skip intl extension not enabled'); ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '58.1') < 0) die('skip for ICU >= 58.1'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
ini_set("intl.error_level", E_WARNING);
|
||||
ini_set("intl.default_locale", "pt_PT");
|
||||
ini_set("date.timezone", 'Atlantic/Azores');
|
||||
|
||||
$ts = strtotime('2012-01-01 00:00:00 UTC');
|
||||
|
||||
function d(IntlDateFormatter $df) {
|
||||
global $ts;
|
||||
echo $df->format($ts), "\n";
|
||||
var_dump($df->getCalendar(),
|
||||
$df->getCalendarObject()->getType(),
|
||||
$df->getCalendarObject()->getTimeZone()->getId());
|
||||
echo "\n";
|
||||
}
|
||||
|
||||
$df = new IntlDateFormatter('fr@calendar=islamic', 0, 0, 'Europe/Minsk');
|
||||
d($df);
|
||||
|
||||
|
||||
//changing the calendar with a cal type should not change tz
|
||||
$df->setCalendar(IntlDateFormatter::TRADITIONAL);
|
||||
d($df);
|
||||
|
||||
//but changing with an actual calendar should
|
||||
$cal = IntlCalendar::createInstance("UTC");
|
||||
$df->setCalendar($cal);
|
||||
d($df);
|
||||
|
||||
?>
|
||||
==DONE==
|
||||
--EXPECT--
|
||||
dimanche 1 janvier 2012 ap. J.-C. à 03:00:00 heure de Kaliningrad
|
||||
int(1)
|
||||
string(9) "gregorian"
|
||||
string(12) "Europe/Minsk"
|
||||
|
||||
dimanche 8 safar 1433 AH à 03:00:00 heure de Kaliningrad
|
||||
int(0)
|
||||
string(7) "islamic"
|
||||
string(12) "Europe/Minsk"
|
||||
|
||||
dimanche 1 janvier 2012 ap. J.-C. à 00:00:00 Temps universel coordonné
|
||||
bool(false)
|
||||
string(9) "gregorian"
|
||||
string(3) "UTC"
|
||||
|
||||
==DONE==
|
||||
@@ -3,6 +3,7 @@ numfmt_get_locale()
|
||||
--SKIPIF--
|
||||
<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '51.2') < 0) die('skip for ICU >= 51.2'); ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '58.1') >= 0) die('skip for ICU < 58.1'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
--TEST--
|
||||
numfmt_get_locale()
|
||||
--SKIPIF--
|
||||
<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '58.1') < 0) die('skip for ICU >= 58.1'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Get locale.
|
||||
*/
|
||||
|
||||
function ut_main()
|
||||
{
|
||||
$locales = array(
|
||||
'en_UK',
|
||||
'en_US',
|
||||
'fr_CA',
|
||||
);
|
||||
|
||||
$loc_types = array(
|
||||
Locale::ACTUAL_LOCALE => 'actual',
|
||||
Locale::VALID_LOCALE => 'valid',
|
||||
);
|
||||
|
||||
$res_str = '';
|
||||
|
||||
foreach( $locales as $locale )
|
||||
{
|
||||
$fmt = ut_nfmt_create( $locale, NumberFormatter::DECIMAL );
|
||||
$res_str .= "$locale: ";
|
||||
foreach( $loc_types as $loc_type => $loc_type_name )
|
||||
$res_str .= sprintf( " %s=%s",
|
||||
$loc_type_name,
|
||||
dump( ut_nfmt_get_locale( $fmt, $loc_type ) ) );
|
||||
$res_str .= "\n";
|
||||
}
|
||||
|
||||
return $res_str;
|
||||
}
|
||||
|
||||
include_once( 'ut_common.inc' );
|
||||
|
||||
// Run the test
|
||||
ut_run();
|
||||
?>
|
||||
--EXPECT--
|
||||
en_UK: actual='en' valid='en'
|
||||
en_US: actual='en' valid='en_US'
|
||||
fr_CA: actual='fr' valid='fr_CA'
|
||||
@@ -2,6 +2,7 @@
|
||||
spoofchecker suspicious character checker
|
||||
--SKIPIF--
|
||||
<?php if(!extension_loaded('intl') || !class_exists("Spoofchecker")) print 'skip'; ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '57.1') >= 0)die('skip for ICU <= 57.1'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
--TEST--
|
||||
spoofchecker suspicious character checker
|
||||
--SKIPIF--
|
||||
<?php if(!extension_loaded('intl') || !class_exists("Spoofchecker")) print 'skip'; ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '57.1') < 0) die('skip for ICU >= 58.1'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
echo "paypal with Cyrillic spoof characters\n";
|
||||
$x = new Spoofchecker();
|
||||
var_dump($x->isSuspicious("http://www.payp\u{0430}l.com"));
|
||||
var_dump($x->isSuspicious("\u{041F}aypal.com"));
|
||||
|
||||
echo "certain all-uppercase Latin sequences can be spoof of Greek\n";
|
||||
$x = new Spoofchecker();
|
||||
$x->setAllowedLocales("gr_GR");
|
||||
var_dump($x->isSuspicious("NAPKIN PEZ"));
|
||||
var_dump($x->isSuspicious("napkin pez"));
|
||||
?>
|
||||
--EXPECTF--
|
||||
paypal with Cyrillic spoof characters
|
||||
bool(true)
|
||||
bool(true)
|
||||
certain all-uppercase Latin sequences can be spoof of Greek
|
||||
bool(true)
|
||||
bool(true)
|
||||
@@ -3,9 +3,9 @@ IntlTimeZone::getIDForWindowsID basic test
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('intl'))
|
||||
die('skip intl extension not enabled');
|
||||
if (version_compare(INTL_ICU_VERSION, '52') < 0)
|
||||
die('skip for ICU >= 52');
|
||||
die('skip intl extension not enabled'); ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '52') < 0)die('skip for ICU >= 52'); ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '58.1') >= 0) die('skip for ICU <= 57.1'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
--TEST--
|
||||
IntlTimeZone::getIDForWindowsID basic test
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('intl'))
|
||||
die('skip intl extension not enabled'); ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '58.1') < 0) die('skip for ICU >= 58.1'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$tzs = array(
|
||||
'Gnomeregan' => array(NULL),
|
||||
'India Standard Time' => array(NULL),
|
||||
'Pacific Standard Time' => array('001', 'CA', 'MX', 'US', 'ZZ'),
|
||||
'Romance Standard Time' => array('001', 'BE', 'DK', 'ES', 'FR'),
|
||||
);
|
||||
|
||||
foreach ($tzs as $tz => $regions) {
|
||||
echo "** $tz\n";
|
||||
foreach ($regions as $region) {
|
||||
var_dump(IntlTimeZone::getIDForWindowsID($tz, $region));
|
||||
if (intl_get_error_code() != U_ZERO_ERROR) {
|
||||
echo "Error: ", intl_get_error_message(), "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
--EXPECT--
|
||||
** Gnomeregan
|
||||
bool(false)
|
||||
Error: intltz_get_windows_id: Unknown windows timezone: U_ILLEGAL_ARGUMENT_ERROR
|
||||
** India Standard Time
|
||||
string(13) "Asia/Calcutta"
|
||||
** Pacific Standard Time
|
||||
string(19) "America/Los_Angeles"
|
||||
string(17) "America/Vancouver"
|
||||
string(19) "America/Los_Angeles"
|
||||
string(19) "America/Los_Angeles"
|
||||
string(7) "PST8PDT"
|
||||
** Romance Standard Time
|
||||
string(12) "Europe/Paris"
|
||||
string(15) "Europe/Brussels"
|
||||
string(17) "Europe/Copenhagen"
|
||||
string(13) "Europe/Madrid"
|
||||
string(12) "Europe/Paris"
|
||||
@@ -3,9 +3,9 @@ IntlTimeZone::getWindowsID basic test
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('intl'))
|
||||
die('skip intl extension not enabled');
|
||||
if (version_compare(INTL_ICU_VERSION, '52') < 0)
|
||||
die('skip for ICU >= 52');
|
||||
die('skip intl extension not enabled'); ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '52') < 0)die('skip for ICU >= 52'); ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '58.1') >= 0) die('skip for ICU <= 57.1'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
--TEST--
|
||||
IntlTimeZone::getWindowsID basic test
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('intl'))
|
||||
die('skip intl extension not enabled'); ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '58.1') < 0) die('skip for ICU >= 58.1'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$tzs = array(
|
||||
'America/Bogota',
|
||||
'America/Havana',
|
||||
'America/Indiana/Knox',
|
||||
'America/Los_Angeles',
|
||||
'Azeroth/Kalimdor/Durotar',
|
||||
'Africa/Casablanca',
|
||||
'Asia/Singapore',
|
||||
'Australia/Perth',
|
||||
'Europe/London',
|
||||
'Europe/Istanbul',
|
||||
);
|
||||
|
||||
foreach ($tzs as $tz) {
|
||||
var_dump(IntlTimeZone::getWindowsID($tz));
|
||||
if (intl_get_error_code() != U_ZERO_ERROR) {
|
||||
echo "Error: ", intl_get_error_message(), "\n";
|
||||
}
|
||||
}
|
||||
|
||||
--EXPECT--
|
||||
string(24) "SA Pacific Standard Time"
|
||||
string(18) "Cuba Standard Time"
|
||||
string(21) "Central Standard Time"
|
||||
string(21) "Pacific Standard Time"
|
||||
bool(false)
|
||||
Error: intltz_get_windows_id: Unknown system timezone: U_ILLEGAL_ARGUMENT_ERROR
|
||||
string(21) "Morocco Standard Time"
|
||||
string(23) "Singapore Standard Time"
|
||||
string(26) "W. Australia Standard Time"
|
||||
string(17) "GMT Standard Time"
|
||||
string(20) "Turkey Standard Time"
|
||||
@@ -2,6 +2,7 @@
|
||||
UConverter::convert() w/ Callback Reasons
|
||||
--SKIPIF--
|
||||
<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '58.1') >= 0) die('skip for ICU <= 57.1'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
class MyConverter extends UConverter {
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
--TEST--
|
||||
UConverter::convert() w/ Callback Reasons
|
||||
--SKIPIF--
|
||||
<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
|
||||
<?php if (version_compare(INTL_ICU_VERSION, '60.1') < 0) die('skip for ICU >= 60.1'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
class MyConverter extends UConverter {
|
||||
/**
|
||||
* Called during conversion from source encoding to internal UChar representation
|
||||
*/
|
||||
public function toUCallback($reason, $source, $codeUnits, &$error) {
|
||||
echo "toUCallback(", UConverter::reasonText($reason), ", ...)\n";
|
||||
return parent::toUCallback($reason, $source, $codeUnits, $error);
|
||||
}
|
||||
|
||||
/**
|
||||
* Called during conversion from internal UChar to destination encoding
|
||||
*/
|
||||
public function fromUCallback($reason, $source, $codePoint, &$error) {
|
||||
echo "fromUCallback(", UConverter::reasonText($reason), ", ...)\n";
|
||||
return parent::fromUCallback($reason, $source, $codePoint, $error);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$c = new MyConverter('ascii', 'utf-8');
|
||||
foreach(array("regular", "irregul\xC1\xA1r", "\xC2\xA1unsupported!") as $word) {
|
||||
$c->convert($word);
|
||||
}
|
||||
--EXPECT--
|
||||
toUCallback(REASON_RESET, ...)
|
||||
toUCallback(REASON_RESET, ...)
|
||||
fromUCallback(REASON_RESET, ...)
|
||||
fromUCallback(REASON_RESET, ...)
|
||||
toUCallback(REASON_RESET, ...)
|
||||
toUCallback(REASON_ILLEGAL, ...)
|
||||
toUCallback(REASON_ILLEGAL, ...)
|
||||
toUCallback(REASON_RESET, ...)
|
||||
toUCallback(REASON_ILLEGAL, ...)
|
||||
toUCallback(REASON_ILLEGAL, ...)
|
||||
fromUCallback(REASON_RESET, ...)
|
||||
fromUCallback(REASON_UNASSIGNED, ...)
|
||||
fromUCallback(REASON_UNASSIGNED, ...)
|
||||
fromUCallback(REASON_RESET, ...)
|
||||
fromUCallback(REASON_UNASSIGNED, ...)
|
||||
fromUCallback(REASON_UNASSIGNED, ...)
|
||||
toUCallback(REASON_RESET, ...)
|
||||
toUCallback(REASON_RESET, ...)
|
||||
fromUCallback(REASON_RESET, ...)
|
||||
fromUCallback(REASON_UNASSIGNED, ...)
|
||||
fromUCallback(REASON_RESET, ...)
|
||||
fromUCallback(REASON_UNASSIGNED, ...)
|
||||
toUCallback(REASON_CLOSE, ...)
|
||||
fromUCallback(REASON_CLOSE, ...)
|
||||
toUCallback(REASON_CLOSE, ...)
|
||||
fromUCallback(REASON_CLOSE, ...)
|
||||
@@ -141,7 +141,7 @@ IC_METHOD(getIntPropertyMinValue) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto int IntlChar::getIntPropertyMxValue(int $property) */
|
||||
/* {{{ proto int IntlChar::getIntPropertyMaxValue(int $property) */
|
||||
ZEND_BEGIN_ARG_INFO_EX(getIntPropertyMaxValue_arginfo, 0, ZEND_RETURN_VALUE, 1)
|
||||
ZEND_ARG_INFO(0, property)
|
||||
ZEND_END_ARG_INFO();
|
||||
@@ -188,7 +188,7 @@ static UBool enumCharType_callback(enumCharType_data *context,
|
||||
zval args[3];
|
||||
|
||||
ZVAL_NULL(&retval);
|
||||
/* Note that $start is INclusive, whiel $limit is EXclusive
|
||||
/* Note that $start is INclusive, while $limit is EXclusive
|
||||
* Therefore (0, 32, 15) means CPs 0..31 are of type 15
|
||||
*/
|
||||
ZVAL_LONG(&args[0], start);
|
||||
|
||||
@@ -848,7 +848,6 @@ static PHP_MINIT_FUNCTION(libxml)
|
||||
if (sapi_module.name) {
|
||||
static const char * const supported_sapis[] = {
|
||||
"cgi-fcgi",
|
||||
"fpm-fcgi",
|
||||
"litespeed",
|
||||
NULL
|
||||
};
|
||||
|
||||
@@ -89,7 +89,7 @@ static php_stream_filter_status_t php_mcrypt_filter(
|
||||
php_stream_bucket_delref(bucket);
|
||||
} else {
|
||||
/* Stream cipher */
|
||||
php_stream_bucket_make_writeable(bucket);
|
||||
bucket = php_stream_bucket_make_writeable(bucket);
|
||||
if (data->encrypt) {
|
||||
mcrypt_generic(data->module, bucket->buf, (int)bucket->buflen);
|
||||
} else {
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
Bug #72535 arcfour encryption stream filter crashes php
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("mcrypt")) print "skip"; ?>
|
||||
--FILE--
|
||||
<?php
|
||||
$passphrase = 'My secret';
|
||||
$plaintext = 'Secret secret secret data';
|
||||
|
||||
$iv = substr(md5('iv' . $passphrase, true), 0, 8);
|
||||
$key = substr(md5('pass1' . $passphrase, true) .
|
||||
md5('pass2' . $passphrase, true), 0, 24);
|
||||
$opts = array('iv' => $iv, 'key' => $key, 'mode' => 'stream');
|
||||
|
||||
$expected = substr($plaintext . $plaintext, 0, 48);
|
||||
|
||||
$fp = fopen('php://memory', 'wb+');
|
||||
stream_filter_append($fp, 'mcrypt.arcfour', STREAM_FILTER_WRITE, $opts);
|
||||
fwrite($fp, $plaintext);
|
||||
?>
|
||||
==NOCRASH==
|
||||
--EXPECTF--
|
||||
Deprecated: stream_filter_append(): mcrypt and mdecrypt stream filters have been deprecated in %s on line %d
|
||||
==NOCRASH==
|
||||
@@ -436,7 +436,7 @@ const zend_function_entry mysqli_functions[] = {
|
||||
PHP_FE(mysqli_fetch_field_direct, arginfo_mysqli_result_and_fieldnr)
|
||||
PHP_FE(mysqli_fetch_lengths, arginfo_mysqli_only_result)
|
||||
#ifdef MYSQLI_USE_MYSQLND
|
||||
PHP_FE(mysqli_fetch_all, arginfo_mysqli_only_result)
|
||||
PHP_FE(mysqli_fetch_all, arginfo_mysqli_fetch_array)
|
||||
#endif
|
||||
PHP_FE(mysqli_fetch_array, arginfo_mysqli_fetch_array)
|
||||
PHP_FE(mysqli_fetch_assoc, arginfo_mysqli_only_result)
|
||||
@@ -616,7 +616,7 @@ const zend_function_entry mysqli_result_methods[] = {
|
||||
PHP_FALIAS(fetch_fields, mysqli_fetch_fields, arginfo_mysqli_no_params)
|
||||
PHP_FALIAS(fetch_field_direct, mysqli_fetch_field_direct, arginfo_class_mysqli_result_and_fieldnr)
|
||||
#if defined(MYSQLI_USE_MYSQLND)
|
||||
PHP_FALIAS(fetch_all, mysqli_fetch_all, arginfo_mysqli_no_params)
|
||||
PHP_FALIAS(fetch_all, mysqli_fetch_all, arginfo_class_mysqli_fetch_array)
|
||||
#endif
|
||||
PHP_FALIAS(fetch_array, mysqli_fetch_array, arginfo_class_mysqli_fetch_array)
|
||||
PHP_FALIAS(fetch_assoc, mysqli_fetch_assoc, arginfo_mysqli_no_params)
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
Bug #75434 Wrong reflection for mysqli_fetch_all function
|
||||
--SKIPIF--
|
||||
<?php
|
||||
require_once('skipif.inc');
|
||||
if (!extension_loaded("reflection")) die("skip reflection extension not available");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$rf = new ReflectionFunction('mysqli_fetch_all');
|
||||
var_dump($rf->getNumberOfParameters());
|
||||
var_dump($rf->getNumberOfRequiredParameters());
|
||||
|
||||
$rm = new ReflectionMethod('mysqli_result', 'fetch_all');
|
||||
var_dump($rm->getNumberOfParameters());
|
||||
var_dump($rm->getNumberOfRequiredParameters());
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECT--
|
||||
int(2)
|
||||
int(1)
|
||||
int(1)
|
||||
int(0)
|
||||
===DONE===
|
||||
@@ -124,9 +124,16 @@ isInternal: yes
|
||||
isUserDefined: no
|
||||
returnsReference: no
|
||||
Modifiers: 256
|
||||
Number of Parameters: 0
|
||||
Number of Parameters: 1
|
||||
Number of Required Parameters: 0
|
||||
|
||||
Inspecting parameter 'result_type' of method 'fetch_all'
|
||||
isArray: no
|
||||
allowsNull: no
|
||||
isPassedByReference: no
|
||||
isOptional: yes
|
||||
isDefaultValueAvailable: no
|
||||
|
||||
Inspecting method 'fetch_array'
|
||||
isFinal: no
|
||||
isAbstract: no
|
||||
|
||||
@@ -1611,14 +1611,15 @@ PHP_FUNCTION(oci_close)
|
||||
}
|
||||
|
||||
PHP_OCI_ZVAL_TO_CONNECTION(z_connection, connection);
|
||||
if (GC_REFCOUNT(connection->id) == 2) /* CHANGED VERSION::PHP7
|
||||
Changed the refCount to 2 since
|
||||
internally Zend engine increments
|
||||
RefCount value by 1 */
|
||||
if (GC_REFCOUNT(connection->id) == 2) { /* CHANGED VERSION::PHP7
|
||||
Changed the refCount to 2 since
|
||||
internally Zend engine increments
|
||||
RefCount value by 1 */
|
||||
/* Unregister Oracle TAF */
|
||||
php_oci_unregister_taf_callback(connection);
|
||||
|
||||
zend_list_close(connection->id);
|
||||
|
||||
/* Unregister Oracle TAF */
|
||||
php_oci_unregister_taf_callback(connection);
|
||||
}
|
||||
|
||||
/* ZVAL_NULL(z_connection); */
|
||||
|
||||
|
||||
+19
-3
@@ -56,8 +56,8 @@ Interoperability Support" (ID 207303.1) for details.
|
||||
<time>12:00:00</time>
|
||||
|
||||
<version>
|
||||
<release>2.1.7</release>
|
||||
<api>2.1.7</api>
|
||||
<release>2.1.8</release>
|
||||
<api>2.1.8</api>
|
||||
</version>
|
||||
<stability>
|
||||
<release>stable</release>
|
||||
@@ -66,7 +66,7 @@ Interoperability Support" (ID 207303.1) for details.
|
||||
<license uri="http://www.php.net/license">PHP</license>
|
||||
<notes>
|
||||
This version is for PHP 7 only.
|
||||
Added oci_unregister_taf_callback()
|
||||
Fixed reference counting and memory issues. (Dmitry, Tianfang)
|
||||
</notes>
|
||||
<contents>
|
||||
<dir name="/">
|
||||
@@ -476,6 +476,22 @@ Added oci_unregister_taf_callback()
|
||||
</extsrcrelease>
|
||||
<changelog>
|
||||
|
||||
<release>
|
||||
<version>
|
||||
<release>2.1.7</release>
|
||||
<api>2.1.7</api>
|
||||
</version>
|
||||
<stability>
|
||||
<release>stable</release>
|
||||
<api>stable</api>
|
||||
</stability>
|
||||
<license uri="http://www.php.net/license">PHP</license>
|
||||
<notes>
|
||||
This version is for PHP 7 only.
|
||||
Added oci_unregister_taf_callback()
|
||||
</notes>
|
||||
</release>
|
||||
|
||||
<release>
|
||||
<version>
|
||||
<release>2.1.6</release>
|
||||
|
||||
@@ -57,11 +57,11 @@ function get_attr($conn)
|
||||
?>
|
||||
--EXPECT--
|
||||
**Test 1.1 - Default values for the attribute **************
|
||||
The value of DRIVER_NAME is PHP OCI8 : 2.1.7
|
||||
The value of DRIVER_NAME is PHP OCI8 : 2.1.8
|
||||
|
||||
***Test 1.2 - Get the values from different connections **************
|
||||
Testing with oci_pconnect()
|
||||
The value of DRIVER_NAME is PHP OCI8 : 2.1.7
|
||||
The value of DRIVER_NAME is PHP OCI8 : 2.1.8
|
||||
Testing with oci_new_connect()
|
||||
The value of DRIVER_NAME is PHP OCI8 : 2.1.7
|
||||
The value of DRIVER_NAME is PHP OCI8 : 2.1.8
|
||||
Done
|
||||
@@ -1590,7 +1590,7 @@ static void zend_infer_ranges_warmup(const zend_op_array *op_array, zend_ssa *ss
|
||||
ssa->vars[j].definition_phi->has_range_constraint &&
|
||||
ssa->vars[j].definition_phi->constraint.range.negative &&
|
||||
ssa->vars[j].definition_phi->constraint.range.min_ssa_var < 0 &&
|
||||
ssa->vars[j].definition_phi->constraint.range.min_ssa_var < 0) {
|
||||
ssa->vars[j].definition_phi->constraint.range.max_ssa_var < 0) {
|
||||
zend_ssa_range_constraint *constraint =
|
||||
&ssa->vars[j].definition_phi->constraint.range;
|
||||
if (tmp.min == ssa->var_info[j].range.min &&
|
||||
@@ -2928,7 +2928,7 @@ static int zend_update_type_info(const zend_op_array *op_array,
|
||||
break;
|
||||
case ZEND_FE_FETCH_R:
|
||||
case ZEND_FE_FETCH_RW:
|
||||
tmp = (t2 & MAY_BE_REF);
|
||||
tmp = t2;
|
||||
if (t1 & MAY_BE_OBJECT) {
|
||||
if (opline->opcode == ZEND_FE_FETCH_RW) {
|
||||
tmp |= MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
|
||||
@@ -2953,7 +2953,7 @@ static int zend_update_type_info(const zend_op_array *op_array,
|
||||
}
|
||||
UPDATE_SSA_TYPE(tmp, ssa_ops[i].op2_def);
|
||||
if (ssa_ops[i].result_def >= 0) {
|
||||
tmp = 0;
|
||||
tmp = (ssa_ops[i].result_use >= 0) ? RES_USE_INFO() : 0;
|
||||
if (t1 & MAY_BE_OBJECT) {
|
||||
tmp |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
|
||||
}
|
||||
@@ -3075,7 +3075,13 @@ static int zend_update_type_info(const zend_op_array *op_array,
|
||||
}
|
||||
j = zend_ssa_next_use(ssa_ops, ssa_ops[i].result_def, j);
|
||||
}
|
||||
UPDATE_SSA_TYPE(tmp, ssa_ops[i].op1_def);
|
||||
if ((tmp & MAY_BE_ARRAY) && (tmp & MAY_BE_ARRAY_KEY_ANY)) {
|
||||
UPDATE_SSA_TYPE(tmp, ssa_ops[i].op1_def);
|
||||
} else {
|
||||
/* invalid key type */
|
||||
tmp = (tmp & (MAY_BE_RC1|MAY_BE_RCN)) | (t1 & ~(MAY_BE_RC1|MAY_BE_RCN));
|
||||
UPDATE_SSA_TYPE(tmp, ssa_ops[i].op1_def);
|
||||
}
|
||||
COPY_SSA_OBJ_TYPE(ssa_ops[i].op1_use, ssa_ops[i].op1_def);
|
||||
}
|
||||
/* FETCH_LIST on a string behaves like FETCH_R on null */
|
||||
|
||||
@@ -1230,7 +1230,7 @@ static zend_persistent_script *cache_script_in_file_cache(zend_persistent_script
|
||||
zend_shared_alloc_init_xlat_table();
|
||||
|
||||
/* Calculate the required memory size */
|
||||
memory_used = zend_accel_script_persist_calc(new_persistent_script, NULL, 0);
|
||||
memory_used = zend_accel_script_persist_calc(new_persistent_script, NULL, 0, 0);
|
||||
|
||||
/* Allocate memory block */
|
||||
#ifdef __SSE2__
|
||||
@@ -1318,7 +1318,7 @@ static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_scr
|
||||
zend_shared_alloc_init_xlat_table();
|
||||
|
||||
/* Calculate the required memory size */
|
||||
memory_used = zend_accel_script_persist_calc(new_persistent_script, key, key_length);
|
||||
memory_used = zend_accel_script_persist_calc(new_persistent_script, key, key_length, 1);
|
||||
|
||||
/* Allocate shared memory */
|
||||
#ifdef __SSE2__
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
--TEST--
|
||||
Bug #75570 ("Narrowing occurred during type inference" error)
|
||||
--FILE--
|
||||
<?php
|
||||
function renderRawGraph(array $parents) {
|
||||
$graph = array();
|
||||
foreach ($parents as $p) {
|
||||
foreach ($graph as $v) {
|
||||
$graph[$v]['line'] = 1;
|
||||
}
|
||||
$graph[] = array(
|
||||
'line' => 1,
|
||||
);
|
||||
}
|
||||
}
|
||||
?>
|
||||
OK
|
||||
--EXPECT--
|
||||
OK
|
||||
@@ -0,0 +1,33 @@
|
||||
--TEST--
|
||||
Bug #75608 ("Narrowing occurred during type inference" error)
|
||||
--FILE--
|
||||
<?php
|
||||
class ReactionRatingService
|
||||
{
|
||||
public function calculateBoostPoints()
|
||||
{
|
||||
while ($reaction = $reactions) {
|
||||
$reactionRatings = $this->validFunction();
|
||||
|
||||
$totalWeight = 0;
|
||||
$runningScore = 0;
|
||||
$queue = [];
|
||||
foreach ($reactionRatings as $ratingData) {
|
||||
if ($runningScore != $reaction['Score']) {
|
||||
if ( ! $ratingData['BoostEarned']) {
|
||||
$queue[] = $ratingData['UserID'];
|
||||
}
|
||||
} else {
|
||||
foreach ($queue as $userId) {
|
||||
$userBoostPointsRecalculate[$userId][] = $reaction['ID'];
|
||||
}
|
||||
}
|
||||
$totalWeight += $ratingData['Weight'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
OK
|
||||
--EXPECT--
|
||||
OK
|
||||
@@ -23,7 +23,7 @@
|
||||
#define ZEND_PERSIST_H
|
||||
|
||||
int zend_accel_script_persistable(zend_persistent_script *script);
|
||||
uint zend_accel_script_persist_calc(zend_persistent_script *script, char *key, unsigned int key_length);
|
||||
uint zend_accel_script_persist_calc(zend_persistent_script *script, char *key, unsigned int key_length, int for_shm);
|
||||
zend_persistent_script *zend_accel_script_persist(zend_persistent_script *script, char **key, unsigned int key_length);
|
||||
|
||||
#endif /* ZEND_PERSIST_H */
|
||||
@@ -396,7 +396,7 @@ static void zend_accel_persist_class_table_calc(HashTable *class_table)
|
||||
zend_hash_persist_calc(class_table, zend_persist_class_entry_calc);
|
||||
}
|
||||
|
||||
uint zend_accel_script_persist_calc(zend_persistent_script *new_persistent_script, char *key, unsigned int key_length)
|
||||
uint zend_accel_script_persist_calc(zend_persistent_script *new_persistent_script, char *key, unsigned int key_length, int for_shm)
|
||||
{
|
||||
new_persistent_script->mem = NULL;
|
||||
new_persistent_script->size = 0;
|
||||
@@ -405,12 +405,14 @@ uint zend_accel_script_persist_calc(zend_persistent_script *new_persistent_scrip
|
||||
new_persistent_script->corrupted = 0;
|
||||
ZCG(current_persistent_script) = new_persistent_script;
|
||||
|
||||
if (!for_shm) {
|
||||
/* script is not going to be saved in SHM */
|
||||
new_persistent_script->corrupted = 1;
|
||||
}
|
||||
|
||||
ADD_DUP_SIZE(new_persistent_script, sizeof(zend_persistent_script));
|
||||
if (key) {
|
||||
ADD_DUP_SIZE(key, key_length + 1);
|
||||
} else {
|
||||
/* script is not going to be saved in SHM */
|
||||
new_persistent_script->corrupted = 1;
|
||||
}
|
||||
ADD_STRING(new_persistent_script->script.filename);
|
||||
|
||||
|
||||
+36
-38
@@ -359,17 +359,18 @@ ZEND_END_ARG_INFO()
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_seal, 0, 0, 4)
|
||||
ZEND_ARG_INFO(0, data)
|
||||
ZEND_ARG_INFO(1, sealdata)
|
||||
ZEND_ARG_INFO(1, ekeys) /* arary */
|
||||
ZEND_ARG_INFO(1, ekeys) /* array */
|
||||
ZEND_ARG_INFO(0, pubkeys) /* array */
|
||||
ZEND_ARG_INFO(0, method)
|
||||
ZEND_ARG_INFO(1, iv)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO(arginfo_openssl_open, 0)
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_open, 0, 0, 4)
|
||||
ZEND_ARG_INFO(0, data)
|
||||
ZEND_ARG_INFO(1, opendata)
|
||||
ZEND_ARG_INFO(0, ekey)
|
||||
ZEND_ARG_INFO(0, privkey)
|
||||
ZEND_ARG_INFO(0, method)
|
||||
ZEND_ARG_INFO(0, iv)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
@@ -1661,10 +1662,11 @@ static X509 * php_openssl_x509_from_zval(zval * val, int makeresource, zend_reso
|
||||
if (!what) {
|
||||
return NULL;
|
||||
}
|
||||
/* this is so callers can decide if they should free the X509 */
|
||||
if (resourceval) {
|
||||
*resourceval = res;
|
||||
Z_ADDREF_P(val);
|
||||
if (makeresource) {
|
||||
Z_ADDREF_P(val);
|
||||
}
|
||||
}
|
||||
return (X509*)what;
|
||||
}
|
||||
@@ -1728,7 +1730,6 @@ PHP_FUNCTION(openssl_x509_export_to_file)
|
||||
zval * zcert;
|
||||
zend_bool notext = 1;
|
||||
BIO * bio_out;
|
||||
zend_resource *certresource;
|
||||
char * filename;
|
||||
size_t filename_len;
|
||||
|
||||
@@ -1737,7 +1738,7 @@ PHP_FUNCTION(openssl_x509_export_to_file)
|
||||
}
|
||||
RETVAL_FALSE;
|
||||
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, NULL);
|
||||
if (cert == NULL) {
|
||||
php_error_docref(NULL, E_WARNING, "cannot get cert from parameter 1");
|
||||
return;
|
||||
@@ -1761,7 +1762,7 @@ PHP_FUNCTION(openssl_x509_export_to_file)
|
||||
php_openssl_store_errors();
|
||||
php_error_docref(NULL, E_WARNING, "error opening file %s", filename);
|
||||
}
|
||||
if (certresource == NULL && cert) {
|
||||
if (Z_TYPE_P(zcert) != IS_RESOURCE) {
|
||||
X509_free(cert);
|
||||
}
|
||||
|
||||
@@ -2070,14 +2071,13 @@ PHP_FUNCTION(openssl_x509_export)
|
||||
zval * zcert, *zout;
|
||||
zend_bool notext = 1;
|
||||
BIO * bio_out;
|
||||
zend_resource *certresource;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "zz/|b", &zcert, &zout, ¬ext) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
RETVAL_FALSE;
|
||||
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, NULL);
|
||||
if (cert == NULL) {
|
||||
php_error_docref(NULL, E_WARNING, "cannot get cert from parameter 1");
|
||||
return;
|
||||
@@ -2106,7 +2106,7 @@ PHP_FUNCTION(openssl_x509_export)
|
||||
BIO_free(bio_out);
|
||||
|
||||
cleanup:
|
||||
if (certresource == NULL && cert != NULL) {
|
||||
if (Z_TYPE_P(zcert) != IS_RESOURCE) {
|
||||
X509_free(cert);
|
||||
}
|
||||
}
|
||||
@@ -2143,7 +2143,6 @@ PHP_FUNCTION(openssl_x509_fingerprint)
|
||||
{
|
||||
X509 *cert;
|
||||
zval *zcert;
|
||||
zend_resource *certresource;
|
||||
zend_bool raw_output = 0;
|
||||
char *method = "sha1";
|
||||
size_t method_len;
|
||||
@@ -2153,7 +2152,7 @@ PHP_FUNCTION(openssl_x509_fingerprint)
|
||||
return;
|
||||
}
|
||||
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, NULL);
|
||||
if (cert == NULL) {
|
||||
php_error_docref(NULL, E_WARNING, "cannot get cert from parameter 1");
|
||||
RETURN_FALSE;
|
||||
@@ -2166,7 +2165,7 @@ PHP_FUNCTION(openssl_x509_fingerprint)
|
||||
RETVAL_FALSE;
|
||||
}
|
||||
|
||||
if (certresource == NULL && cert) {
|
||||
if (Z_TYPE_P(zcert) != IS_RESOURCE) {
|
||||
X509_free(cert);
|
||||
}
|
||||
}
|
||||
@@ -2178,14 +2177,14 @@ PHP_FUNCTION(openssl_x509_check_private_key)
|
||||
zval * zcert, *zkey;
|
||||
X509 * cert = NULL;
|
||||
EVP_PKEY * key = NULL;
|
||||
zend_resource *certresource = NULL, *keyresource = NULL;
|
||||
zend_resource *keyresource = NULL;
|
||||
|
||||
RETVAL_FALSE;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "zz", &zcert, &zkey) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, NULL);
|
||||
if (cert == NULL) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@@ -2197,7 +2196,7 @@ PHP_FUNCTION(openssl_x509_check_private_key)
|
||||
if (keyresource == NULL && key) {
|
||||
EVP_PKEY_free(key);
|
||||
}
|
||||
if (certresource == NULL && cert) {
|
||||
if (Z_TYPE_P(zcert) != IS_RESOURCE) {
|
||||
X509_free(cert);
|
||||
}
|
||||
}
|
||||
@@ -2280,7 +2279,6 @@ PHP_FUNCTION(openssl_x509_parse)
|
||||
{
|
||||
zval * zcert;
|
||||
X509 * cert = NULL;
|
||||
zend_resource *certresource = NULL;
|
||||
int i, sig_nid;
|
||||
zend_bool useshortnames = 1;
|
||||
char * tmpstr;
|
||||
@@ -2300,7 +2298,7 @@ PHP_FUNCTION(openssl_x509_parse)
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "z|b", &zcert, &useshortnames) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, NULL);
|
||||
if (cert == NULL) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@@ -2416,10 +2414,10 @@ PHP_FUNCTION(openssl_x509_parse)
|
||||
add_assoc_stringl(&subitem, extname, bio_buf->data, bio_buf->length);
|
||||
} else {
|
||||
zval_dtor(return_value);
|
||||
if (certresource == NULL && cert) {
|
||||
BIO_free(bio_out);
|
||||
if (Z_TYPE_P(zcert) != IS_RESOURCE) {
|
||||
X509_free(cert);
|
||||
}
|
||||
BIO_free(bio_out);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
}
|
||||
@@ -2432,8 +2430,7 @@ PHP_FUNCTION(openssl_x509_parse)
|
||||
BIO_free(bio_out);
|
||||
}
|
||||
add_assoc_zval(return_value, "extensions", &subitem);
|
||||
|
||||
if (certresource == NULL && cert) {
|
||||
if (Z_TYPE_P(zcert) != IS_RESOURCE) {
|
||||
X509_free(cert);
|
||||
}
|
||||
}
|
||||
@@ -2533,7 +2530,6 @@ PHP_FUNCTION(openssl_x509_checkpurpose)
|
||||
zval * zcert, * zcainfo = NULL;
|
||||
X509_STORE * cainfo = NULL;
|
||||
X509 * cert = NULL;
|
||||
zend_resource *certresource = NULL;
|
||||
STACK_OF(X509) * untrustedchain = NULL;
|
||||
zend_long purpose;
|
||||
char * untrusted = NULL;
|
||||
@@ -2557,7 +2553,7 @@ PHP_FUNCTION(openssl_x509_checkpurpose)
|
||||
if (cainfo == NULL) {
|
||||
goto clean_exit;
|
||||
}
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, NULL);
|
||||
if (cert == NULL) {
|
||||
goto clean_exit;
|
||||
}
|
||||
@@ -2568,11 +2564,10 @@ PHP_FUNCTION(openssl_x509_checkpurpose)
|
||||
} else {
|
||||
RETVAL_BOOL(ret);
|
||||
}
|
||||
|
||||
clean_exit:
|
||||
if (certresource == NULL && cert) {
|
||||
if (Z_TYPE_P(zcert) != IS_RESOURCE) {
|
||||
X509_free(cert);
|
||||
}
|
||||
clean_exit:
|
||||
if (cainfo) {
|
||||
X509_STORE_free(cainfo);
|
||||
}
|
||||
@@ -2764,7 +2759,7 @@ PHP_FUNCTION(openssl_pkcs12_export_to_file)
|
||||
size_t pass_len;
|
||||
zval *zcert = NULL, *zpkey = NULL, *args = NULL;
|
||||
EVP_PKEY *priv_key = NULL;
|
||||
zend_resource *certresource, *keyresource;
|
||||
zend_resource *keyresource;
|
||||
zval * item;
|
||||
STACK_OF(X509) *ca = NULL;
|
||||
|
||||
@@ -2773,7 +2768,7 @@ PHP_FUNCTION(openssl_pkcs12_export_to_file)
|
||||
|
||||
RETVAL_FALSE;
|
||||
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, NULL);
|
||||
if (cert == NULL) {
|
||||
php_error_docref(NULL, E_WARNING, "cannot get cert from parameter 1");
|
||||
return;
|
||||
@@ -2783,7 +2778,7 @@ PHP_FUNCTION(openssl_pkcs12_export_to_file)
|
||||
php_error_docref(NULL, E_WARNING, "cannot get private key from parameter 3");
|
||||
goto cleanup;
|
||||
}
|
||||
if (cert && !X509_check_private_key(cert, priv_key)) {
|
||||
if (!X509_check_private_key(cert, priv_key)) {
|
||||
php_openssl_store_errors();
|
||||
php_error_docref(NULL, E_WARNING, "private key does not correspond to cert");
|
||||
goto cleanup;
|
||||
@@ -2833,7 +2828,8 @@ cleanup:
|
||||
if (keyresource == NULL && priv_key) {
|
||||
EVP_PKEY_free(priv_key);
|
||||
}
|
||||
if (certresource == NULL && cert) {
|
||||
|
||||
if (Z_TYPE_P(zcert) != IS_RESOURCE) {
|
||||
X509_free(cert);
|
||||
}
|
||||
}
|
||||
@@ -2848,7 +2844,7 @@ PHP_FUNCTION(openssl_pkcs12_export)
|
||||
PKCS12 * p12 = NULL;
|
||||
zval * zcert = NULL, *zout = NULL, *zpkey, *args = NULL;
|
||||
EVP_PKEY *priv_key = NULL;
|
||||
zend_resource *certresource, *keyresource;
|
||||
zend_resource *keyresource;
|
||||
char * pass;
|
||||
size_t pass_len;
|
||||
char * friendly_name = NULL;
|
||||
@@ -2860,7 +2856,7 @@ PHP_FUNCTION(openssl_pkcs12_export)
|
||||
|
||||
RETVAL_FALSE;
|
||||
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
|
||||
cert = php_openssl_x509_from_zval(zcert, 0, NULL);
|
||||
if (cert == NULL) {
|
||||
php_error_docref(NULL, E_WARNING, "cannot get cert from parameter 1");
|
||||
return;
|
||||
@@ -2870,7 +2866,7 @@ PHP_FUNCTION(openssl_pkcs12_export)
|
||||
php_error_docref(NULL, E_WARNING, "cannot get private key from parameter 3");
|
||||
goto cleanup;
|
||||
}
|
||||
if (cert && !X509_check_private_key(cert, priv_key)) {
|
||||
if (!X509_check_private_key(cert, priv_key)) {
|
||||
php_error_docref(NULL, E_WARNING, "private key does not correspond to cert");
|
||||
goto cleanup;
|
||||
}
|
||||
@@ -2911,7 +2907,7 @@ cleanup:
|
||||
if (keyresource == NULL && priv_key) {
|
||||
EVP_PKEY_free(priv_key);
|
||||
}
|
||||
if (certresource == NULL && cert) {
|
||||
if (Z_TYPE_P(zcert) != IS_RESOURCE) {
|
||||
X509_free(cert);
|
||||
}
|
||||
}
|
||||
@@ -3206,7 +3202,9 @@ static X509_REQ * php_openssl_csr_from_zval(zval * val, int makeresource, zend_r
|
||||
if (what) {
|
||||
if (resourceval) {
|
||||
*resourceval = res;
|
||||
Z_ADDREF_P(val);
|
||||
if (makeresource) {
|
||||
Z_ADDREF_P(val);
|
||||
}
|
||||
}
|
||||
return (X509_REQ*)what;
|
||||
}
|
||||
@@ -5839,7 +5837,7 @@ PHP_FUNCTION(openssl_verify)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys)
|
||||
/* {{{ proto int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys [, string method [, &string iv]]))
|
||||
Seals data */
|
||||
PHP_FUNCTION(openssl_seal)
|
||||
{
|
||||
@@ -5970,7 +5968,7 @@ clean_exit:
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto bool openssl_open(string data, &string opendata, string ekey, mixed privkey)
|
||||
/* {{{ proto bool openssl_open(string data, &string opendata, string ekey, mixed privkey [, string method [, string iv]])
|
||||
Opens data */
|
||||
PHP_FUNCTION(openssl_open)
|
||||
{
|
||||
|
||||
@@ -9,15 +9,6 @@ if (!@openssl_pkey_new()) die("skip cannot create private key");
|
||||
<?php
|
||||
echo "Creating private key\n";
|
||||
|
||||
/* stack up some entropy; performance is not critical,
|
||||
* and being slow will most likely even help the test.
|
||||
*/
|
||||
for ($z = "", $i = 0; $i < 1024; $i++) {
|
||||
$z .= $i * $i;
|
||||
if (function_exists("usleep"))
|
||||
usleep($i);
|
||||
}
|
||||
|
||||
$conf = array('config' => dirname(__FILE__) . DIRECTORY_SEPARATOR . 'openssl.cnf');
|
||||
$privkey = openssl_pkey_new($conf);
|
||||
|
||||
@@ -32,6 +23,7 @@ if ($key_file_name === false)
|
||||
echo "Export key to file\n";
|
||||
|
||||
openssl_pkey_export_to_file($privkey, $key_file_name, $passphrase, $conf) or die("failed to export to file $key_file_name");
|
||||
var_dump(is_resource($privkey));
|
||||
|
||||
echo "Load key from file - array syntax\n";
|
||||
|
||||
@@ -69,6 +61,7 @@ echo "OK!\n";
|
||||
--EXPECT--
|
||||
Creating private key
|
||||
Export key to file
|
||||
bool(true)
|
||||
Load key from file - array syntax
|
||||
Load key using direct syntax
|
||||
Load key manually and use string syntax
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
--TEST--
|
||||
Bug #75307 Wrong reflection for openssl_open function
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded("openssl")) die("skip openssl not available");
|
||||
if (!extension_loaded("reflection")) die("skip reflection not available");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$rf = new ReflectionFunction('openssl_open');
|
||||
var_dump($rf->getNumberOfParameters());
|
||||
var_dump($rf->getNumberOfRequiredParameters());
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECT--
|
||||
int(6)
|
||||
int(4)
|
||||
===DONE===
|
||||
@@ -0,0 +1,83 @@
|
||||
--TEST--
|
||||
openssl_csr_export_to_file() tests
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("openssl")) print "skip"; ?>
|
||||
--FILE--
|
||||
<?php
|
||||
$csrfile = dirname(__FILE__) . "/openssl_csr_export_to_file_csr.tmp";
|
||||
$wrong = "wrong";
|
||||
$config = __DIR__ . DIRECTORY_SEPARATOR . 'openssl.cnf';
|
||||
$phex = 'dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61e' .
|
||||
'f75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d268370557' .
|
||||
'7d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e382' .
|
||||
'6634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab';
|
||||
$dh_details = array('p' => $phex, 'g' => '2');
|
||||
$dh = openssl_pkey_new(array(
|
||||
'dh'=> array('p' => hex2bin($phex), 'g' => '2'))
|
||||
);
|
||||
|
||||
$dn = array(
|
||||
"countryName" => "BR",
|
||||
"stateOrProvinceName" => "Rio Grande do Sul",
|
||||
"localityName" => "Porto Alegre",
|
||||
"commonName" => "Henrique do N. Angelo",
|
||||
"emailAddress" => "hnangelo@php.net"
|
||||
);
|
||||
|
||||
$args = array(
|
||||
"digest_alg" => "sha1",
|
||||
"private_key_bits" => 2048,
|
||||
"private_key_type" => OPENSSL_KEYTYPE_DSA,
|
||||
"encrypt_key" => true,
|
||||
"config" => $config,
|
||||
);
|
||||
|
||||
$privkey_file = 'file://' . dirname(__FILE__) . '/private_rsa_2048.key';
|
||||
$csr = openssl_csr_new($dn, $privkey_file, $args);
|
||||
var_dump(openssl_csr_export_to_file($csr, $csrfile));
|
||||
var_dump(file_get_contents($csrfile));
|
||||
var_dump(openssl_csr_export_to_file($wrong, $csrfile));
|
||||
var_dump(openssl_csr_export_to_file($dh, $csrfile));
|
||||
var_dump(openssl_csr_export_to_file(array(), $csrfile));
|
||||
var_dump(openssl_csr_export_to_file($csr, $csrfile, false));
|
||||
?>
|
||||
--CLEAN--
|
||||
<?php
|
||||
$csrfile = dirname(__FILE__) . "/openssl_csr_export_to_file_csr.tmp";
|
||||
if (file_exists($csrfile)) {
|
||||
unlink($csrfile);
|
||||
}
|
||||
?>
|
||||
--EXPECTF--
|
||||
bool(true)
|
||||
string(1086) "-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIIC6jCCAdICAQAwgaQxCzAJBgNVBAYTAkJSMRowGAYDVQQIExFSaW8gR3JhbmRl
|
||||
IGRvIFN1bDEVMBMGA1UEBxMMUG9ydG8gQWxlZ3JlMR4wHAYDVQQDExVIZW5yaXF1
|
||||
ZSBkbyBOLiBBbmdlbG8xHzAdBgkqhkiG9w0BCQEWEGhuYW5nZWxvQHBocC5uZXQx
|
||||
ITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN
|
||||
AQEBBQADggEPADCCAQoCggEBAK21JlVtWPqyc2UQtw2AdJHSIL5OzAHWsu/Mmxjz
|
||||
w4VZWwG+Ao1m2j7OJ8lAkxLfSlRtB+6Vx8Q21krAtve+M3b6pT9C9qKdfzNkrXk3
|
||||
BggTncBh9ozkVQGS/P1m0zn/SKSgDO+6DdeLHLMjpUASaoYfsay4PJLAdnTqLOeM
|
||||
g6qNE6u0ebZXVfmpSmV1pSZ6kQnxbsb6rX1iOZxkwHnVWYb40Hy0EILo31x6BVqB
|
||||
m159m7s38ChiRHqlj20DmRfxXjiT5YDgYYQ29wQBTVQrTN5O9UW5Y+eKTXd8r6te
|
||||
dsbIBXdKN7NeX7ksGYHq1I3hLsP8EyvZO78qfjKyEB0Jj3UCAwEAAaAAMA0GCSqG
|
||||
SIb3DQEBBQUAA4IBAQCamzVmIbElkiDQKzQpkfU5tHjrWPrHDSB186NI0sQ8i6GQ
|
||||
1YT6yPAXBPTQ1aER/6uAZJL5HfWEX8V1rKbe8GkPAPCHHQzmHyWlaO2EHS57zJhk
|
||||
sRrhqkhhkSNiDg4OrsguhRtbB2VMGeDbqHGI89uGqqGHUiZc/Bh8N7WFXZkUU/A0
|
||||
sfBgVeqg0P4SWez5fHXqBNcjMdMI5f0bikcDZSIfTHS8FX+PMurLBC8UPB0YNIOl
|
||||
1r2Lvo+6YUHOziG1OwQd3K0xxu/JzzOE+lMB73ynz4V6DY5Qv3qVno1GpupvgmQA
|
||||
JViHkCA9x6m8RJXAFvqmgLlWlUzbDv/cRrDfjWjR
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
"
|
||||
|
||||
Warning: openssl_csr_export_to_file() expects parameter 1 to be resource, string given in %s on line %d
|
||||
NULL
|
||||
|
||||
Warning: openssl_csr_export_to_file(): supplied resource is not a valid OpenSSL X.509 CSR resource in %s on line %d
|
||||
|
||||
Warning: openssl_csr_export_to_file(): cannot get CSR from parameter 1 in %s on line %d
|
||||
bool(false)
|
||||
|
||||
Warning: openssl_csr_export_to_file() expects parameter 1 to be resource, array given in %s on line %d
|
||||
NULL
|
||||
bool(true)
|
||||
Loaded 100 of 158 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user