summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/tests/bug63305.phpt43
-rw-r--r--Zend/tests/bug63336.phpt24
-rw-r--r--Zend/zend_compile.c4
-rw-r--r--ext/curl/interface.c5
-rw-r--r--ext/curl/tests/bug63363.phpt29
-rw-r--r--ext/date/lib/timezonedb.h903
-rw-r--r--ext/gd/config.w326
-rw-r--r--ext/libxml/libxml.c2
-rw-r--r--ext/libxml/tests/004.phpt22
-rw-r--r--ext/libxml/tests/bug63389.phpt14
-rw-r--r--ext/mysql/php_mysql.c40
-rw-r--r--ext/mysql/tests/mysql_reflection_extension.phpt105
-rw-r--r--ext/mysql/tests/mysql_reflection_functions.phpt387
-rw-r--r--ext/pcre/php_pcre.c18
-rw-r--r--ext/pdo_mysql/mysql_statement.c113
-rw-r--r--ext/pdo_mysql/tests/bug_41997.phpt14
-rw-r--r--ext/pdo_mysql/tests/bug_61207.phpt57
-rw-r--r--ext/pdo_pgsql/pgsql_statement.c14
-rw-r--r--ext/pdo_pgsql/tests/bug62593.phpt51
-rw-r--r--ext/phar/util.c26
-rw-r--r--ext/reflection/php_reflection.c2
-rw-r--r--ext/reflection/tests/bug63399.phpt49
-rw-r--r--ext/reflection/tests/traits005.phpt6
-rw-r--r--ext/sockets/sockets.c2
-rwxr-xr-xext/spl/doxygen.cfg4
-rw-r--r--ext/standard/basic_functions.c5
-rw-r--r--sapi/fpm/php-fpm.service.in12
-rwxr-xr-xserver-tests.php111
28 files changed, 1453 insertions, 615 deletions
diff --git a/Zend/tests/bug63305.phpt b/Zend/tests/bug63305.phpt
new file mode 100644
index 0000000000..4bd3a4dbeb
--- /dev/null
+++ b/Zend/tests/bug63305.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Bug #63305 (zend_mm_heap corrupted with traits)
+--FILE--
+<?php
+new Attachment("");
+
+function __autoload($class) {
+ switch ($class) {
+ case "Attachment":
+ eval(<<<'PHP'
+class Attachment extends File {
+}
+PHP
+ );
+ break;
+ case "File":
+ eval(<<<'PHP'
+class File {
+ use TDatabaseObject {
+ TDatabaseObject::__construct as private databaseObjectConstruct;
+ }
+ public function __construct() {
+ }
+}
+PHP
+ );
+ break;
+ case "TDatabaseObject":
+ eval(<<<'PHP'
+trait TDatabaseObject {
+ public function __construct() {
+ }
+}
+PHP
+ );
+ break;
+ }
+ return TRUE;
+}
+echo "okey";
+?>
+--EXPECT--
+okey
diff --git a/Zend/tests/bug63336.phpt b/Zend/tests/bug63336.phpt
new file mode 100644
index 0000000000..d2c3d41131
--- /dev/null
+++ b/Zend/tests/bug63336.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Bug #63336 (invalid E_NOTICE error occur)
+--XFAIL--
+Bug is not fixed yet
+--FILE--
+<?php
+error_reporting(E_ALL | E_NOTICE );
+define("TEST", "123");
+class Base {
+ const DUMMY = "XXX";
+ public function foo($var=TEST, $more=null) { return true; }
+ public function bar($more=self::DUMMY) { return true; }
+}
+
+class Child extends Base {
+ const DUMMY = "DDD";
+ public function foo($var=TEST, array $more = array()) { return true; }
+ public function bar($var, $more=self::DUMMY) { return true; }
+}
+?>
+--EXPECT--
+Strict Standards: Declaration of Child::foo() should be compatible with Base::foo($var = '123', $more = NULL) in %sbug63336.php on line %d
+
+Strict Standards: Declaration of Child::bar() should be compatible with Base::bar($var, $more = 'XXX') in %sbug63336.php on line %d
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 0c03e4cf18..2d2c284b74 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -3966,7 +3966,7 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args,
/* if it is 0, no modifieres has been changed */
if (aliases[i]->modifiers) {
- fn_copy.common.fn_flags = aliases[i]->modifiers;
+ fn_copy.common.fn_flags = aliases[i]->modifiers | ZEND_ACC_ALIAS;
if (!(aliases[i]->modifiers & ZEND_ACC_PPP_MASK)) {
fn_copy.common.fn_flags |= ZEND_ACC_PUBLIC;
}
@@ -4007,7 +4007,7 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args,
&& (!aliases[i]->trait_method->ce || fn->common.scope == aliases[i]->trait_method->ce)
&& (aliases[i]->trait_method->mname_len == fnname_len)
&& (zend_binary_strcasecmp(aliases[i]->trait_method->method_name, aliases[i]->trait_method->mname_len, fn->common.function_name, fnname_len) == 0)) {
- fn_copy.common.fn_flags = aliases[i]->modifiers;
+ fn_copy.common.fn_flags = aliases[i]->modifiers | ZEND_ACC_ALIAS;
if (!(aliases[i]->modifiers & ZEND_ACC_PPP_MASK)) {
fn_copy.common.fn_flags |= ZEND_ACC_PUBLIC;
diff --git a/ext/curl/interface.c b/ext/curl/interface.c
index d9abece5fc..eb7ed8d202 100644
--- a/ext/curl/interface.c
+++ b/ext/curl/interface.c
@@ -2014,6 +2014,10 @@ static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *retu
switch (option) {
/* Long options */
+ case CURLOPT_SSL_VERIFYHOST:
+ if(Z_TYPE_PP(zvalue)==IS_BOOL && Z_BVAL_PP(zvalue)) {
+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "CURLOPT_SSL_VERIFYHOST set to true which disables common name validation (setting CURLOPT_SSL_VERIFYHOST to 2 enables common name validation)");
+ }
case CURLOPT_AUTOREFERER:
case CURLOPT_BUFFERSIZE:
case CURLOPT_CLOSEPOLICY:
@@ -2048,7 +2052,6 @@ static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *retu
case CURLOPT_PUT:
case CURLOPT_RESUME_FROM:
case CURLOPT_SSLVERSION:
- case CURLOPT_SSL_VERIFYHOST:
case CURLOPT_SSL_VERIFYPEER:
case CURLOPT_TIMECONDITION:
case CURLOPT_TIMEOUT:
diff --git a/ext/curl/tests/bug63363.phpt b/ext/curl/tests/bug63363.phpt
new file mode 100644
index 0000000000..43deaa2346
--- /dev/null
+++ b/ext/curl/tests/bug63363.phpt
@@ -0,0 +1,29 @@
+--TEST--
+Bug #63363 (CURL silently accepts boolean value for SSL_VERIFYHOST)
+--SKIPIF--
+<?php
+if (!extension_loaded("curl")) {
+ exit("skip curl extension not loaded");
+}
+
+?>
+--FILE--
+<?php
+$ch = curl_init();
+var_dump(curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false));
+/* Case that should throw an error */
+var_dump(curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true));
+var_dump(curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0));
+var_dump(curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1));
+var_dump(curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2));
+
+curl_close($ch);
+?>
+--EXPECTF--
+bool(true)
+
+Notice: curl_setopt(): CURLOPT_SSL_VERIFYHOST set to true which disables common name validation (setting CURLOPT_SSL_VERIFYHOST to 2 enables common name validation) in %s on line %d
+bool(true)
+bool(true)
+bool(true)
+bool(true)
diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h
index 6f52cbf572..143b5e1ba0 100644
--- a/ext/date/lib/timezonedb.h
+++ b/ext/date/lib/timezonedb.h
@@ -58,24 +58,24 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[576] = {
{ "America/Anguilla" , 0x0027FB },
{ "America/Antigua" , 0x002850 },
{ "America/Araguaina" , 0x0028B6 },
- { "America/Argentina/Buenos_Aires" , 0x002A11 },
- { "America/Argentina/Catamarca" , 0x002BBF },
- { "America/Argentina/ComodRivadavia" , 0x002D80 },
- { "America/Argentina/Cordoba" , 0x002F26 },
- { "America/Argentina/Jujuy" , 0x0030FB },
- { "America/Argentina/La_Rioja" , 0x0032AF },
- { "America/Argentina/Mendoza" , 0x003467 },
- { "America/Argentina/Rio_Gallegos" , 0x003627 },
- { "America/Argentina/Salta" , 0x0037DC },
- { "America/Argentina/San_Juan" , 0x003988 },
- { "America/Argentina/San_Luis" , 0x003B40 },
- { "America/Argentina/Tucuman" , 0x003D06 },
- { "America/Argentina/Ushuaia" , 0x003EC2 },
- { "America/Aruba" , 0x00407D },
- { "America/Asuncion" , 0x0040E3 },
- { "America/Atikokan" , 0x0043C8 },
- { "America/Atka" , 0x00449E },
- { "America/Bahia" , 0x004804 },
+ { "America/Argentina/Buenos_Aires" , 0x002B10 },
+ { "America/Argentina/Catamarca" , 0x002CBE },
+ { "America/Argentina/ComodRivadavia" , 0x002E7F },
+ { "America/Argentina/Cordoba" , 0x003025 },
+ { "America/Argentina/Jujuy" , 0x0031FA },
+ { "America/Argentina/La_Rioja" , 0x0033AE },
+ { "America/Argentina/Mendoza" , 0x003566 },
+ { "America/Argentina/Rio_Gallegos" , 0x003726 },
+ { "America/Argentina/Salta" , 0x0038DB },
+ { "America/Argentina/San_Juan" , 0x003A87 },
+ { "America/Argentina/San_Luis" , 0x003C3F },
+ { "America/Argentina/Tucuman" , 0x003E05 },
+ { "America/Argentina/Ushuaia" , 0x003FC1 },
+ { "America/Aruba" , 0x00417C },
+ { "America/Asuncion" , 0x0041E2 },
+ { "America/Atikokan" , 0x0044C7 },
+ { "America/Atka" , 0x00459D },
+ { "America/Bahia" , 0x004903 },
{ "America/Bahia_Banderas" , 0x004A96 },
{ "America/Barbados" , 0x004D0F },
{ "America/Belem" , 0x004DA9 },
@@ -232,352 +232,352 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[576] = {
{ "Asia/Aden" , 0x01896A },
{ "Asia/Almaty" , 0x0189BF },
{ "Asia/Amman" , 0x018B3E },
- { "Asia/Anadyr" , 0x018DFE },
- { "Asia/Aqtau" , 0x018FE3 },
- { "Asia/Aqtobe" , 0x0191E2 },
- { "Asia/Ashgabat" , 0x01939A },
- { "Asia/Ashkhabad" , 0x0194B7 },
- { "Asia/Baghdad" , 0x0195D4 },
- { "Asia/Bahrain" , 0x019749 },
- { "Asia/Baku" , 0x0197AF },
- { "Asia/Bangkok" , 0x019A97 },
- { "Asia/Beirut" , 0x019AEC },
- { "Asia/Bishkek" , 0x019DF9 },
- { "Asia/Brunei" , 0x019FA5 },
- { "Asia/Calcutta" , 0x01A007 },
- { "Asia/Choibalsan" , 0x01A080 },
- { "Asia/Chongqing" , 0x01A1F9 },
- { "Asia/Chungking" , 0x01A2E8 },
- { "Asia/Colombo" , 0x01A397 },
- { "Asia/Dacca" , 0x01A433 },
- { "Asia/Damascus" , 0x01A4D9 },
- { "Asia/Dhaka" , 0x01A829 },
- { "Asia/Dili" , 0x01A8CF },
- { "Asia/Dubai" , 0x01A958 },
- { "Asia/Dushanbe" , 0x01A9AD },
- { "Asia/Gaza" , 0x01AAB0 },
- { "Asia/Harbin" , 0x01AD09 },
- { "Asia/Hebron" , 0x01ADF0 },
- { "Asia/Ho_Chi_Minh" , 0x01B052 },
- { "Asia/Hong_Kong" , 0x01B0CA },
- { "Asia/Hovd" , 0x01B28C },
- { "Asia/Irkutsk" , 0x01B404 },
- { "Asia/Istanbul" , 0x01B5EA },
- { "Asia/Jakarta" , 0x01B9D7 },
- { "Asia/Jayapura" , 0x01BA81 },
- { "Asia/Jerusalem" , 0x01BB1D },
- { "Asia/Kabul" , 0x01BE4C },
- { "Asia/Kamchatka" , 0x01BE9D },
- { "Asia/Karachi" , 0x01C079 },
- { "Asia/Kashgar" , 0x01C12E },
- { "Asia/Kathmandu" , 0x01C1FF },
- { "Asia/Katmandu" , 0x01C265 },
- { "Asia/Kolkata" , 0x01C2CB },
- { "Asia/Krasnoyarsk" , 0x01C344 },
- { "Asia/Kuala_Lumpur" , 0x01C52C },
- { "Asia/Kuching" , 0x01C5E9 },
- { "Asia/Kuwait" , 0x01C6D7 },
- { "Asia/Macao" , 0x01C72C },
- { "Asia/Macau" , 0x01C867 },
- { "Asia/Magadan" , 0x01C9A2 },
- { "Asia/Makassar" , 0x01CB84 },
- { "Asia/Manila" , 0x01CC48 },
- { "Asia/Muscat" , 0x01CCCD },
- { "Asia/Nicosia" , 0x01CD22 },
- { "Asia/Novokuznetsk" , 0x01D00A },
- { "Asia/Novosibirsk" , 0x01D20C },
- { "Asia/Omsk" , 0x01D3F7 },
- { "Asia/Oral" , 0x01D5DE },
- { "Asia/Phnom_Penh" , 0x01D7AE },
- { "Asia/Pontianak" , 0x01D826 },
- { "Asia/Pyongyang" , 0x01D8E7 },
- { "Asia/Qatar" , 0x01D954 },
- { "Asia/Qyzylorda" , 0x01D9BA },
- { "Asia/Rangoon" , 0x01DB90 },
- { "Asia/Riyadh" , 0x01DC08 },
- { "Asia/Saigon" , 0x01DC5D },
- { "Asia/Sakhalin" , 0x01DCD5 },
- { "Asia/Samarkand" , 0x01DECC },
- { "Asia/Seoul" , 0x01E002 },
- { "Asia/Shanghai" , 0x01E0A6 },
- { "Asia/Singapore" , 0x01E186 },
- { "Asia/Taipei" , 0x01E23D },
- { "Asia/Tashkent" , 0x01E355 },
- { "Asia/Tbilisi" , 0x01E486 },
- { "Asia/Tehran" , 0x01E640 },
- { "Asia/Tel_Aviv" , 0x01E8AE },
- { "Asia/Thimbu" , 0x01EBDD },
- { "Asia/Thimphu" , 0x01EC43 },
- { "Asia/Tokyo" , 0x01ECA9 },
- { "Asia/Ujung_Pandang" , 0x01ED32 },
- { "Asia/Ulaanbaatar" , 0x01EDAE },
- { "Asia/Ulan_Bator" , 0x01EF09 },
- { "Asia/Urumqi" , 0x01F056 },
- { "Asia/Vientiane" , 0x01F11D },
- { "Asia/Vladivostok" , 0x01F195 },
- { "Asia/Yakutsk" , 0x01F381 },
- { "Asia/Yekaterinburg" , 0x01F566 },
- { "Asia/Yerevan" , 0x01F771 },
- { "Atlantic/Azores" , 0x01F971 },
- { "Atlantic/Bermuda" , 0x01FE74 },
- { "Atlantic/Canary" , 0x020155 },
- { "Atlantic/Cape_Verde" , 0x02042B },
- { "Atlantic/Faeroe" , 0x0204A4 },
- { "Atlantic/Faroe" , 0x020748 },
- { "Atlantic/Jan_Mayen" , 0x0209EC },
- { "Atlantic/Madeira" , 0x020D1E },
- { "Atlantic/Reykjavik" , 0x021227 },
- { "Atlantic/South_Georgia" , 0x0213E0 },
- { "Atlantic/St_Helena" , 0x0215F2 },
- { "Atlantic/Stanley" , 0x021424 },
- { "Australia/ACT" , 0x021647 },
- { "Australia/Adelaide" , 0x021964 },
- { "Australia/Brisbane" , 0x021C90 },
- { "Australia/Broken_Hill" , 0x021D57 },
- { "Australia/Canberra" , 0x022095 },
- { "Australia/Currie" , 0x0223B2 },
- { "Australia/Darwin" , 0x0226E5 },
- { "Australia/Eucla" , 0x02276B },
- { "Australia/Hobart" , 0x022840 },
- { "Australia/LHI" , 0x022B9E },
- { "Australia/Lindeman" , 0x022E39 },
- { "Australia/Lord_Howe" , 0x022F1A },
- { "Australia/Melbourne" , 0x0231C5 },
- { "Australia/North" , 0x0234EA },
- { "Australia/NSW" , 0x02355E },
- { "Australia/Perth" , 0x02387B },
- { "Australia/Queensland" , 0x023953 },
- { "Australia/South" , 0x0239FF },
- { "Australia/Sydney" , 0x023D1C },
- { "Australia/Tasmania" , 0x024059 },
- { "Australia/Victoria" , 0x02439E },
- { "Australia/West" , 0x0246BB },
- { "Australia/Yancowinna" , 0x024771 },
- { "Brazil/Acre" , 0x024A93 },
- { "Brazil/DeNoronha" , 0x024B92 },
- { "Brazil/East" , 0x024CB2 },
- { "Brazil/West" , 0x024F8F },
- { "Canada/Atlantic" , 0x025087 },
- { "Canada/Central" , 0x02556F },
- { "Canada/East-Saskatchewan" , 0x025E79 },
- { "Canada/Eastern" , 0x025989 },
- { "Canada/Mountain" , 0x026002 },
- { "Canada/Newfoundland" , 0x026378 },
- { "Canada/Pacific" , 0x0268A3 },
- { "Canada/Saskatchewan" , 0x026CBC },
- { "Canada/Yukon" , 0x026E45 },
- { "CET" , 0x027148 },
- { "Chile/Continental" , 0x027451 },
- { "Chile/EasterIsland" , 0x0277EC },
- { "CST6CDT" , 0x027B2E },
- { "Cuba" , 0x027E7F },
- { "EET" , 0x0281F2 },
- { "Egypt" , 0x0284A5 },
- { "Eire" , 0x028768 },
- { "EST" , 0x028C79 },
- { "EST5EDT" , 0x028CBD },
- { "Etc/GMT" , 0x02900E },
- { "Etc/GMT+0" , 0x0290DA },
- { "Etc/GMT+1" , 0x029164 },
- { "Etc/GMT+10" , 0x0291F1 },
- { "Etc/GMT+11" , 0x02927F },
- { "Etc/GMT+12" , 0x02930D },
- { "Etc/GMT+2" , 0x029428 },
- { "Etc/GMT+3" , 0x0294B4 },
- { "Etc/GMT+4" , 0x029540 },
- { "Etc/GMT+5" , 0x0295CC },
- { "Etc/GMT+6" , 0x029658 },
- { "Etc/GMT+7" , 0x0296E4 },
- { "Etc/GMT+8" , 0x029770 },
- { "Etc/GMT+9" , 0x0297FC },
- { "Etc/GMT-0" , 0x029096 },
- { "Etc/GMT-1" , 0x02911E },
- { "Etc/GMT-10" , 0x0291AA },
- { "Etc/GMT-11" , 0x029238 },
- { "Etc/GMT-12" , 0x0292C6 },
- { "Etc/GMT-13" , 0x029354 },
- { "Etc/GMT-14" , 0x02939B },
- { "Etc/GMT-2" , 0x0293E2 },
- { "Etc/GMT-3" , 0x02946E },
- { "Etc/GMT-4" , 0x0294FA },
- { "Etc/GMT-5" , 0x029586 },
- { "Etc/GMT-6" , 0x029612 },
- { "Etc/GMT-7" , 0x02969E },
- { "Etc/GMT-8" , 0x02972A },
- { "Etc/GMT-9" , 0x0297B6 },
- { "Etc/GMT0" , 0x029052 },
- { "Etc/Greenwich" , 0x029842 },
- { "Etc/UCT" , 0x029886 },
- { "Etc/Universal" , 0x0298CA },
- { "Etc/UTC" , 0x02990E },
- { "Etc/Zulu" , 0x029952 },
- { "Europe/Amsterdam" , 0x029996 },
- { "Europe/Andorra" , 0x029DD4 },
- { "Europe/Athens" , 0x02A050 },
- { "Europe/Belfast" , 0x02A393 },
- { "Europe/Belgrade" , 0x02A8CA },
- { "Europe/Berlin" , 0x02AB93 },
- { "Europe/Bratislava" , 0x02AEE9 },
- { "Europe/Brussels" , 0x02B21B },
- { "Europe/Bucharest" , 0x02B652 },
- { "Europe/Budapest" , 0x02B97C },
- { "Europe/Chisinau" , 0x02BCEF },
- { "Europe/Copenhagen" , 0x02C07D },
- { "Europe/Dublin" , 0x02C387 },
- { "Europe/Gibraltar" , 0x02C898 },
- { "Europe/Guernsey" , 0x02CCEF },
- { "Europe/Helsinki" , 0x02D226 },
- { "Europe/Isle_of_Man" , 0x02D4DC },
- { "Europe/Istanbul" , 0x02DA13 },
- { "Europe/Jersey" , 0x02DE00 },
- { "Europe/Kaliningrad" , 0x02E337 },
- { "Europe/Kiev" , 0x02E59D },
- { "Europe/Lisbon" , 0x02E8B4 },
- { "Europe/Ljubljana" , 0x02EDB8 },
- { "Europe/London" , 0x02F081 },
- { "Europe/Luxembourg" , 0x02F5B8 },
- { "Europe/Madrid" , 0x02FA0E },
- { "Europe/Malta" , 0x02FDD4 },
- { "Europe/Mariehamn" , 0x03018D },
- { "Europe/Minsk" , 0x030443 },
- { "Europe/Monaco" , 0x030651 },
- { "Europe/Moscow" , 0x030A8C },
- { "Europe/Nicosia" , 0x030CDD },
- { "Europe/Oslo" , 0x030FC5 },
- { "Europe/Paris" , 0x0312F7 },
- { "Europe/Podgorica" , 0x03173D },
- { "Europe/Prague" , 0x031A06 },
- { "Europe/Riga" , 0x031D38 },
- { "Europe/Rome" , 0x03207D },
- { "Europe/Samara" , 0x032440 },
- { "Europe/San_Marino" , 0x032673 },
- { "Europe/Sarajevo" , 0x032A36 },
- { "Europe/Simferopol" , 0x032CFF },
- { "Europe/Skopje" , 0x03302A },
- { "Europe/Sofia" , 0x0332F3 },
- { "Europe/Stockholm" , 0x0335FB },
- { "Europe/Tallinn" , 0x0338AA },
- { "Europe/Tirane" , 0x033BE4 },
- { "Europe/Tiraspol" , 0x033EEA },
- { "Europe/Uzhgorod" , 0x034278 },
- { "Europe/Vaduz" , 0x03458F },
- { "Europe/Vatican" , 0x034822 },
- { "Europe/Vienna" , 0x034BE5 },
- { "Europe/Vilnius" , 0x034F12 },
- { "Europe/Volgograd" , 0x035251 },
- { "Europe/Warsaw" , 0x035451 },
- { "Europe/Zagreb" , 0x035832 },
- { "Europe/Zaporozhye" , 0x035AFB },
- { "Europe/Zurich" , 0x035E3C },
- { "Factory" , 0x0360EB },
- { "GB" , 0x03615C },
- { "GB-Eire" , 0x036693 },
- { "GMT" , 0x036BCA },
- { "GMT+0" , 0x036C96 },
- { "GMT-0" , 0x036C52 },
- { "GMT0" , 0x036C0E },
- { "Greenwich" , 0x036CDA },
- { "Hongkong" , 0x036D1E },
- { "HST" , 0x036EE0 },
- { "Iceland" , 0x036F24 },
- { "Indian/Antananarivo" , 0x0370DD },
- { "Indian/Chagos" , 0x037151 },
- { "Indian/Christmas" , 0x0371B3 },
- { "Indian/Cocos" , 0x0371F7 },
- { "Indian/Comoro" , 0x03723B },
- { "Indian/Kerguelen" , 0x037290 },
- { "Indian/Mahe" , 0x0372E5 },
- { "Indian/Maldives" , 0x03733A },
- { "Indian/Mauritius" , 0x03738F },
- { "Indian/Mayotte" , 0x037405 },
- { "Indian/Reunion" , 0x03745A },
- { "Iran" , 0x0374AF },
- { "Israel" , 0x03771D },
- { "Jamaica" , 0x037A4C },
- { "Japan" , 0x037B11 },
- { "Kwajalein" , 0x037B9A },
- { "Libya" , 0x037BFD },
- { "MET" , 0x037CF7 },
- { "Mexico/BajaNorte" , 0x038000 },
- { "Mexico/BajaSur" , 0x038369 },
- { "Mexico/General" , 0x0385AE },
- { "MST" , 0x03880C },
- { "MST7MDT" , 0x038850 },
- { "Navajo" , 0x038BA1 },
- { "NZ" , 0x038F1A },
- { "NZ-CHAT" , 0x039298 },
- { "Pacific/Apia" , 0x039580 },
- { "Pacific/Auckland" , 0x03971C },
- { "Pacific/Chatham" , 0x039AA8 },
- { "Pacific/Chuuk" , 0x039D9F },
- { "Pacific/Easter" , 0x039DF8 },
- { "Pacific/Efate" , 0x03A156 },
- { "Pacific/Enderbury" , 0x03A21C },
- { "Pacific/Fakaofo" , 0x03A28A },
- { "Pacific/Fiji" , 0x03A2DB },
- { "Pacific/Funafuti" , 0x03A46E },
- { "Pacific/Galapagos" , 0x03A4B2 },
- { "Pacific/Gambier" , 0x03A52A },
- { "Pacific/Guadalcanal" , 0x03A58F },
- { "Pacific/Guam" , 0x03A5E4 },
- { "Pacific/Honolulu" , 0x03A63A },
- { "Pacific/Johnston" , 0x03A6B1 },
- { "Pacific/Kiritimati" , 0x03A703 },
- { "Pacific/Kosrae" , 0x03A76E },
- { "Pacific/Kwajalein" , 0x03A7CB },
- { "Pacific/Majuro" , 0x03A837 },
- { "Pacific/Marquesas" , 0x03A896 },
- { "Pacific/Midway" , 0x03A8FD },
- { "Pacific/Nauru" , 0x03A987 },
- { "Pacific/Niue" , 0x03A9FF },
- { "Pacific/Norfolk" , 0x03AA5D },
- { "Pacific/Noumea" , 0x03AAB2 },
- { "Pacific/Pago_Pago" , 0x03AB42 },
- { "Pacific/Palau" , 0x03ABCB },
- { "Pacific/Pitcairn" , 0x03AC0F },
- { "Pacific/Pohnpei" , 0x03AC64 },
- { "Pacific/Ponape" , 0x03ACB9 },
- { "Pacific/Port_Moresby" , 0x03ACFE },
- { "Pacific/Rarotonga" , 0x03AD42 },
- { "Pacific/Saipan" , 0x03AE1E },
- { "Pacific/Samoa" , 0x03AE81 },
- { "Pacific/Tahiti" , 0x03AF0A },
- { "Pacific/Tarawa" , 0x03AF6F },
- { "Pacific/Tongatapu" , 0x03AFC3 },
- { "Pacific/Truk" , 0x03B04F },
- { "Pacific/Wake" , 0x03B094 },
- { "Pacific/Wallis" , 0x03B0E4 },
- { "Pacific/Yap" , 0x03B128 },
- { "Poland" , 0x03B16D },
- { "Portugal" , 0x03B54E },
- { "PRC" , 0x03BA4A },
- { "PST8PDT" , 0x03BAFB },
- { "ROC" , 0x03BE4C },
- { "ROK" , 0x03BF64 },
- { "Singapore" , 0x03C008 },
- { "Turkey" , 0x03C0BF },
- { "UCT" , 0x03C4AC },
- { "Universal" , 0x03C4F0 },
- { "US/Alaska" , 0x03C534 },
- { "US/Aleutian" , 0x03C89D },
- { "US/Arizona" , 0x03CC03 },
- { "US/Central" , 0x03CC91 },
- { "US/East-Indiana" , 0x03D69B },
- { "US/Eastern" , 0x03D19C },
- { "US/Hawaii" , 0x03D905 },
- { "US/Indiana-Starke" , 0x03D976 },
- { "US/Michigan" , 0x03DCE7 },
- { "US/Mountain" , 0x03E01E },
- { "US/Pacific" , 0x03E397 },
- { "US/Pacific-New" , 0x03E79C },
- { "US/Samoa" , 0x03EBA1 },
- { "UTC" , 0x03EC2A },
- { "W-SU" , 0x03EF21 },
- { "WET" , 0x03EC6E },
- { "Zulu" , 0x03F15B },
+ { "Asia/Anadyr" , 0x018DF4 },
+ { "Asia/Aqtau" , 0x018FD9 },
+ { "Asia/Aqtobe" , 0x0191D8 },
+ { "Asia/Ashgabat" , 0x019390 },
+ { "Asia/Ashkhabad" , 0x0194AD },
+ { "Asia/Baghdad" , 0x0195CA },
+ { "Asia/Bahrain" , 0x01973F },
+ { "Asia/Baku" , 0x0197A5 },
+ { "Asia/Bangkok" , 0x019A8D },
+ { "Asia/Beirut" , 0x019AE2 },
+ { "Asia/Bishkek" , 0x019DEF },
+ { "Asia/Brunei" , 0x019F9B },
+ { "Asia/Calcutta" , 0x019FFD },
+ { "Asia/Choibalsan" , 0x01A076 },
+ { "Asia/Chongqing" , 0x01A1EF },
+ { "Asia/Chungking" , 0x01A2DE },
+ { "Asia/Colombo" , 0x01A38D },
+ { "Asia/Dacca" , 0x01A429 },
+ { "Asia/Damascus" , 0x01A4CF },
+ { "Asia/Dhaka" , 0x01A81F },
+ { "Asia/Dili" , 0x01A8C5 },
+ { "Asia/Dubai" , 0x01A94E },
+ { "Asia/Dushanbe" , 0x01A9A3 },
+ { "Asia/Gaza" , 0x01AAA6 },
+ { "Asia/Harbin" , 0x01ACFF },
+ { "Asia/Hebron" , 0x01ADE6 },
+ { "Asia/Ho_Chi_Minh" , 0x01B048 },
+ { "Asia/Hong_Kong" , 0x01B0C0 },
+ { "Asia/Hovd" , 0x01B282 },
+ { "Asia/Irkutsk" , 0x01B3FA },
+ { "Asia/Istanbul" , 0x01B5E0 },
+ { "Asia/Jakarta" , 0x01B9CD },
+ { "Asia/Jayapura" , 0x01BA77 },
+ { "Asia/Jerusalem" , 0x01BB13 },
+ { "Asia/Kabul" , 0x01BE42 },
+ { "Asia/Kamchatka" , 0x01BE93 },
+ { "Asia/Karachi" , 0x01C06F },
+ { "Asia/Kashgar" , 0x01C124 },
+ { "Asia/Kathmandu" , 0x01C1F5 },
+ { "Asia/Katmandu" , 0x01C25B },
+ { "Asia/Kolkata" , 0x01C2C1 },
+ { "Asia/Krasnoyarsk" , 0x01C33A },
+ { "Asia/Kuala_Lumpur" , 0x01C522 },
+ { "Asia/Kuching" , 0x01C5DF },
+ { "Asia/Kuwait" , 0x01C6CD },
+ { "Asia/Macao" , 0x01C722 },
+ { "Asia/Macau" , 0x01C85D },
+ { "Asia/Magadan" , 0x01C998 },
+ { "Asia/Makassar" , 0x01CB7A },
+ { "Asia/Manila" , 0x01CC3E },
+ { "Asia/Muscat" , 0x01CCC3 },
+ { "Asia/Nicosia" , 0x01CD18 },
+ { "Asia/Novokuznetsk" , 0x01D000 },
+ { "Asia/Novosibirsk" , 0x01D202 },
+ { "Asia/Omsk" , 0x01D3ED },
+ { "Asia/Oral" , 0x01D5D4 },
+ { "Asia/Phnom_Penh" , 0x01D7A4 },
+ { "Asia/Pontianak" , 0x01D81C },
+ { "Asia/Pyongyang" , 0x01D8DD },
+ { "Asia/Qatar" , 0x01D94A },
+ { "Asia/Qyzylorda" , 0x01D9B0 },
+ { "Asia/Rangoon" , 0x01DB86 },
+ { "Asia/Riyadh" , 0x01DBFE },
+ { "Asia/Saigon" , 0x01DC53 },
+ { "Asia/Sakhalin" , 0x01DCCB },
+ { "Asia/Samarkand" , 0x01DEC2 },
+ { "Asia/Seoul" , 0x01DFF8 },
+ { "Asia/Shanghai" , 0x01E09C },
+ { "Asia/Singapore" , 0x01E17C },
+ { "Asia/Taipei" , 0x01E233 },
+ { "Asia/Tashkent" , 0x01E34B },
+ { "Asia/Tbilisi" , 0x01E47C },
+ { "Asia/Tehran" , 0x01E636 },
+ { "Asia/Tel_Aviv" , 0x01E8A4 },
+ { "Asia/Thimbu" , 0x01EBD3 },
+ { "Asia/Thimphu" , 0x01EC39 },
+ { "Asia/Tokyo" , 0x01EC9F },
+ { "Asia/Ujung_Pandang" , 0x01ED28 },
+ { "Asia/Ulaanbaatar" , 0x01EDA4 },
+ { "Asia/Ulan_Bator" , 0x01EEFF },
+ { "Asia/Urumqi" , 0x01F04C },
+ { "Asia/Vientiane" , 0x01F113 },
+ { "Asia/Vladivostok" , 0x01F18B },
+ { "Asia/Yakutsk" , 0x01F377 },
+ { "Asia/Yekaterinburg" , 0x01F55C },
+ { "Asia/Yerevan" , 0x01F767 },
+ { "Atlantic/Azores" , 0x01F967 },
+ { "Atlantic/Bermuda" , 0x01FE6A },
+ { "Atlantic/Canary" , 0x02014B },
+ { "Atlantic/Cape_Verde" , 0x020421 },
+ { "Atlantic/Faeroe" , 0x02049A },
+ { "Atlantic/Faroe" , 0x02073E },
+ { "Atlantic/Jan_Mayen" , 0x0209E2 },
+ { "Atlantic/Madeira" , 0x020D14 },
+ { "Atlantic/Reykjavik" , 0x02121D },
+ { "Atlantic/South_Georgia" , 0x0213D6 },
+ { "Atlantic/St_Helena" , 0x0215E8 },
+ { "Atlantic/Stanley" , 0x02141A },
+ { "Australia/ACT" , 0x02163D },
+ { "Australia/Adelaide" , 0x02195A },
+ { "Australia/Brisbane" , 0x021C86 },
+ { "Australia/Broken_Hill" , 0x021D4D },
+ { "Australia/Canberra" , 0x02208B },
+ { "Australia/Currie" , 0x0223A8 },
+ { "Australia/Darwin" , 0x0226DB },
+ { "Australia/Eucla" , 0x022761 },
+ { "Australia/Hobart" , 0x022836 },
+ { "Australia/LHI" , 0x022B94 },
+ { "Australia/Lindeman" , 0x022E2F },
+ { "Australia/Lord_Howe" , 0x022F10 },
+ { "Australia/Melbourne" , 0x0231BB },
+ { "Australia/North" , 0x0234E0 },
+ { "Australia/NSW" , 0x023554 },
+ { "Australia/Perth" , 0x023871 },
+ { "Australia/Queensland" , 0x023949 },
+ { "Australia/South" , 0x0239F5 },
+ { "Australia/Sydney" , 0x023D12 },
+ { "Australia/Tasmania" , 0x02404F },
+ { "Australia/Victoria" , 0x024394 },
+ { "Australia/West" , 0x0246B1 },
+ { "Australia/Yancowinna" , 0x024767 },
+ { "Brazil/Acre" , 0x024A89 },
+ { "Brazil/DeNoronha" , 0x024B88 },
+ { "Brazil/East" , 0x024CA8 },
+ { "Brazil/West" , 0x024F85 },
+ { "Canada/Atlantic" , 0x02507D },
+ { "Canada/Central" , 0x025565 },
+ { "Canada/East-Saskatchewan" , 0x025E6F },
+ { "Canada/Eastern" , 0x02597F },
+ { "Canada/Mountain" , 0x025FF8 },
+ { "Canada/Newfoundland" , 0x02636E },
+ { "Canada/Pacific" , 0x026899 },
+ { "Canada/Saskatchewan" , 0x026CB2 },
+ { "Canada/Yukon" , 0x026E3B },
+ { "CET" , 0x02713E },
+ { "Chile/Continental" , 0x027447 },
+ { "Chile/EasterIsland" , 0x0277E2 },
+ { "CST6CDT" , 0x027B24 },
+ { "Cuba" , 0x027E75 },
+ { "EET" , 0x0281E8 },
+ { "Egypt" , 0x02849B },
+ { "Eire" , 0x02875E },
+ { "EST" , 0x028C6F },
+ { "EST5EDT" , 0x028CB3 },
+ { "Etc/GMT" , 0x029004 },
+ { "Etc/GMT+0" , 0x0290D0 },
+ { "Etc/GMT+1" , 0x02915A },
+ { "Etc/GMT+10" , 0x0291E7 },
+ { "Etc/GMT+11" , 0x029275 },
+ { "Etc/GMT+12" , 0x029303 },
+ { "Etc/GMT+2" , 0x02941E },
+ { "Etc/GMT+3" , 0x0294AA },
+ { "Etc/GMT+4" , 0x029536 },
+ { "Etc/GMT+5" , 0x0295C2 },
+ { "Etc/GMT+6" , 0x02964E },
+ { "Etc/GMT+7" , 0x0296DA },
+ { "Etc/GMT+8" , 0x029766 },
+ { "Etc/GMT+9" , 0x0297F2 },
+ { "Etc/GMT-0" , 0x02908C },
+ { "Etc/GMT-1" , 0x029114 },
+ { "Etc/GMT-10" , 0x0291A0 },
+ { "Etc/GMT-11" , 0x02922E },
+ { "Etc/GMT-12" , 0x0292BC },
+ { "Etc/GMT-13" , 0x02934A },
+ { "Etc/GMT-14" , 0x029391 },
+ { "Etc/GMT-2" , 0x0293D8 },
+ { "Etc/GMT-3" , 0x029464 },
+ { "Etc/GMT-4" , 0x0294F0 },
+ { "Etc/GMT-5" , 0x02957C },
+ { "Etc/GMT-6" , 0x029608 },
+ { "Etc/GMT-7" , 0x029694 },
+ { "Etc/GMT-8" , 0x029720 },
+ { "Etc/GMT-9" , 0x0297AC },
+ { "Etc/GMT0" , 0x029048 },
+ { "Etc/Greenwich" , 0x029838 },
+ { "Etc/UCT" , 0x02987C },
+ { "Etc/Universal" , 0x0298C0 },
+ { "Etc/UTC" , 0x029904 },
+ { "Etc/Zulu" , 0x029948 },
+ { "Europe/Amsterdam" , 0x02998C },
+ { "Europe/Andorra" , 0x029DCA },
+ { "Europe/Athens" , 0x02A046 },
+ { "Europe/Belfast" , 0x02A389 },
+ { "Europe/Belgrade" , 0x02A8C0 },
+ { "Europe/Berlin" , 0x02AB89 },
+ { "Europe/Bratislava" , 0x02AEDF },
+ { "Europe/Brussels" , 0x02B211 },
+ { "Europe/Bucharest" , 0x02B648 },
+ { "Europe/Budapest" , 0x02B972 },
+ { "Europe/Chisinau" , 0x02BCE5 },
+ { "Europe/Copenhagen" , 0x02C073 },
+ { "Europe/Dublin" , 0x02C37D },
+ { "Europe/Gibraltar" , 0x02C88E },
+ { "Europe/Guernsey" , 0x02CCE5 },
+ { "Europe/Helsinki" , 0x02D21C },
+ { "Europe/Isle_of_Man" , 0x02D4D2 },
+ { "Europe/Istanbul" , 0x02DA09 },
+ { "Europe/Jersey" , 0x02DDF6 },
+ { "Europe/Kaliningrad" , 0x02E32D },
+ { "Europe/Kiev" , 0x02E593 },
+ { "Europe/Lisbon" , 0x02E8AA },
+ { "Europe/Ljubljana" , 0x02EDAE },
+ { "Europe/London" , 0x02F077 },
+ { "Europe/Luxembourg" , 0x02F5AE },
+ { "Europe/Madrid" , 0x02FA04 },
+ { "Europe/Malta" , 0x02FDCA },
+ { "Europe/Mariehamn" , 0x030183 },
+ { "Europe/Minsk" , 0x030439 },
+ { "Europe/Monaco" , 0x030647 },
+ { "Europe/Moscow" , 0x030A82 },
+ { "Europe/Nicosia" , 0x030CD3 },
+ { "Europe/Oslo" , 0x030FBB },
+ { "Europe/Paris" , 0x0312ED },
+ { "Europe/Podgorica" , 0x031733 },
+ { "Europe/Prague" , 0x0319FC },
+ { "Europe/Riga" , 0x031D2E },
+ { "Europe/Rome" , 0x032073 },
+ { "Europe/Samara" , 0x032436 },
+ { "Europe/San_Marino" , 0x032669 },
+ { "Europe/Sarajevo" , 0x032A2C },
+ { "Europe/Simferopol" , 0x032CF5 },
+ { "Europe/Skopje" , 0x033020 },
+ { "Europe/Sofia" , 0x0332E9 },
+ { "Europe/Stockholm" , 0x0335F1 },
+ { "Europe/Tallinn" , 0x0338A0 },
+ { "Europe/Tirane" , 0x033BDA },
+ { "Europe/Tiraspol" , 0x033EE0 },
+ { "Europe/Uzhgorod" , 0x03426E },
+ { "Europe/Vaduz" , 0x034585 },
+ { "Europe/Vatican" , 0x034818 },
+ { "Europe/Vienna" , 0x034BDB },
+ { "Europe/Vilnius" , 0x034F08 },
+ { "Europe/Volgograd" , 0x035247 },
+ { "Europe/Warsaw" , 0x035447 },
+ { "Europe/Zagreb" , 0x035828 },
+ { "Europe/Zaporozhye" , 0x035AF1 },
+ { "Europe/Zurich" , 0x035E32 },
+ { "Factory" , 0x0360E1 },
+ { "GB" , 0x036152 },
+ { "GB-Eire" , 0x036689 },
+ { "GMT" , 0x036BC0 },
+ { "GMT+0" , 0x036C8C },
+ { "GMT-0" , 0x036C48 },
+ { "GMT0" , 0x036C04 },
+ { "Greenwich" , 0x036CD0 },
+ { "Hongkong" , 0x036D14 },
+ { "HST" , 0x036ED6 },
+ { "Iceland" , 0x036F1A },
+ { "Indian/Antananarivo" , 0x0370D3 },
+ { "Indian/Chagos" , 0x037147 },
+ { "Indian/Christmas" , 0x0371A9 },
+ { "Indian/Cocos" , 0x0371ED },
+ { "Indian/Comoro" , 0x037231 },
+ { "Indian/Kerguelen" , 0x037286 },
+ { "Indian/Mahe" , 0x0372DB },
+ { "Indian/Maldives" , 0x037330 },
+ { "Indian/Mauritius" , 0x037385 },
+ { "Indian/Mayotte" , 0x0373FB },
+ { "Indian/Reunion" , 0x037450 },
+ { "Iran" , 0x0374A5 },
+ { "Israel" , 0x037713 },
+ { "Jamaica" , 0x037A42 },
+ { "Japan" , 0x037B07 },
+ { "Kwajalein" , 0x037B90 },
+ { "Libya" , 0x037BF3 },
+ { "MET" , 0x037CED },
+ { "Mexico/BajaNorte" , 0x037FF6 },
+ { "Mexico/BajaSur" , 0x03835F },
+ { "Mexico/General" , 0x0385A4 },
+ { "MST" , 0x038802 },
+ { "MST7MDT" , 0x038846 },
+ { "Navajo" , 0x038B97 },
+ { "NZ" , 0x038F10 },
+ { "NZ-CHAT" , 0x03928E },
+ { "Pacific/Apia" , 0x039576 },
+ { "Pacific/Auckland" , 0x039712 },
+ { "Pacific/Chatham" , 0x039A9E },
+ { "Pacific/Chuuk" , 0x039D95 },
+ { "Pacific/Easter" , 0x039DEE },
+ { "Pacific/Efate" , 0x03A14C },
+ { "Pacific/Enderbury" , 0x03A212 },
+ { "Pacific/Fakaofo" , 0x03A280 },
+ { "Pacific/Fiji" , 0x03A2D1 },
+ { "Pacific/Funafuti" , 0x03A464 },
+ { "Pacific/Galapagos" , 0x03A4A8 },
+ { "Pacific/Gambier" , 0x03A520 },
+ { "Pacific/Guadalcanal" , 0x03A585 },
+ { "Pacific/Guam" , 0x03A5DA },
+ { "Pacific/Honolulu" , 0x03A630 },
+ { "Pacific/Johnston" , 0x03A6A7 },
+ { "Pacific/Kiritimati" , 0x03A6F9 },
+ { "Pacific/Kosrae" , 0x03A764 },
+ { "Pacific/Kwajalein" , 0x03A7C1 },
+ { "Pacific/Majuro" , 0x03A82D },
+ { "Pacific/Marquesas" , 0x03A88C },
+ { "Pacific/Midway" , 0x03A8F3 },
+ { "Pacific/Nauru" , 0x03A97D },
+ { "Pacific/Niue" , 0x03A9F5 },
+ { "Pacific/Norfolk" , 0x03AA53 },
+ { "Pacific/Noumea" , 0x03AAA8 },
+ { "Pacific/Pago_Pago" , 0x03AB38 },
+ { "Pacific/Palau" , 0x03ABC1 },
+ { "Pacific/Pitcairn" , 0x03AC05 },
+ { "Pacific/Pohnpei" , 0x03AC5A },
+ { "Pacific/Ponape" , 0x03ACAF },
+ { "Pacific/Port_Moresby" , 0x03ACF4 },
+ { "Pacific/Rarotonga" , 0x03AD38 },
+ { "Pacific/Saipan" , 0x03AE14 },
+ { "Pacific/Samoa" , 0x03AE77 },
+ { "Pacific/Tahiti" , 0x03AF00 },
+ { "Pacific/Tarawa" , 0x03AF65 },
+ { "Pacific/Tongatapu" , 0x03AFB9 },
+ { "Pacific/Truk" , 0x03B045 },
+ { "Pacific/Wake" , 0x03B08A },
+ { "Pacific/Wallis" , 0x03B0DA },
+ { "Pacific/Yap" , 0x03B11E },
+ { "Poland" , 0x03B163 },
+ { "Portugal" , 0x03B544 },
+ { "PRC" , 0x03BA40 },
+ { "PST8PDT" , 0x03BAF1 },
+ { "ROC" , 0x03BE42 },
+ { "ROK" , 0x03BF5A },
+ { "Singapore" , 0x03BFFE },
+ { "Turkey" , 0x03C0B5 },
+ { "UCT" , 0x03C4A2 },
+ { "Universal" , 0x03C4E6 },
+ { "US/Alaska" , 0x03C52A },
+ { "US/Aleutian" , 0x03C893 },
+ { "US/Arizona" , 0x03CBF9 },
+ { "US/Central" , 0x03CC87 },
+ { "US/East-Indiana" , 0x03D691 },
+ { "US/Eastern" , 0x03D192 },
+ { "US/Hawaii" , 0x03D8FB },
+ { "US/Indiana-Starke" , 0x03D96C },
+ { "US/Michigan" , 0x03DCDD },
+ { "US/Mountain" , 0x03E014 },
+ { "US/Pacific" , 0x03E38D },
+ { "US/Pacific-New" , 0x03E792 },
+ { "US/Samoa" , 0x03EB97 },
+ { "UTC" , 0x03EC20 },
+ { "W-SU" , 0x03EF17 },
+ { "WET" , 0x03EC64 },
+ { "Zulu" , 0x03F151 },
};
/* This is a generated file, do not modify */
-const unsigned char timelib_timezone_db_data_builtin[258463] = {
+const unsigned char timelib_timezone_db_data_builtin[258453] = {
/* Africa/Abidjan */
@@ -1382,7 +1382,7 @@ const unsigned char timelib_timezone_db_data_builtin[258463] = {
/* America/Araguaina */
0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x74, 0x30,
+0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x74, 0x30,
0xB8, 0x0F, 0x49, 0xE0, 0xB8, 0xFD, 0x40, 0xA0, 0xB9, 0xF1, 0x34, 0x30, 0xBA, 0xDE, 0x74, 0x20,
0xDA, 0x38, 0xAE, 0x30, 0xDA, 0xEB, 0xFA, 0x30, 0xDC, 0x19, 0xE1, 0xB0, 0xDC, 0xB9, 0x59, 0x20,
0xDD, 0xFB, 0x15, 0x30, 0xDE, 0x9B, 0xDE, 0x20, 0xDF, 0xDD, 0x9A, 0x30, 0xE0, 0x54, 0x33, 0x20,
@@ -1395,13 +1395,29 @@ const unsigned char timelib_timezone_db_data_builtin[258463] = {
0x34, 0x38, 0x54, 0x30, 0x34, 0xF8, 0xC1, 0x20, 0x36, 0x20, 0x1F, 0x30, 0x36, 0xCF, 0x68, 0xA0,
0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xB8, 0x85, 0x20, 0x39, 0xDF, 0xE3, 0x30, 0x3A, 0x8F, 0x2C, 0xA0,
0x3B, 0xC8, 0xFF, 0xB0, 0x3C, 0x6F, 0x0E, 0xA0, 0x3D, 0xC4, 0x91, 0x30, 0x3E, 0x4E, 0xF0, 0xA0,
+0x50, 0x83, 0x65, 0x30, 0x51, 0x20, 0x39, 0xA0, 0x52, 0x63, 0x47, 0x30, 0x53, 0x00, 0x1B, 0xA0,
+0x54, 0x43, 0x29, 0x30, 0x54, 0xE9, 0x38, 0x20, 0x56, 0x23, 0x0B, 0x30, 0x56, 0xC9, 0x1A, 0x20,
+0x58, 0x02, 0xED, 0x30, 0x58, 0xA8, 0xFC, 0x20, 0x59, 0xE2, 0xCF, 0x30, 0x5A, 0x88, 0xDE, 0x20,
+0x5B, 0xCB, 0xEB, 0xB0, 0x5C, 0x68, 0xC0, 0x20, 0x5D, 0xAB, 0xCD, 0xB0, 0x5E, 0x48, 0xA2, 0x20,
+0x5F, 0x8B, 0xAF, 0xB0, 0x60, 0x31, 0xBE, 0xA0, 0x61, 0x6B, 0x91, 0xB0, 0x62, 0x11, 0xA0, 0xA0,
+0x63, 0x4B, 0x73, 0xB0, 0x63, 0xFA, 0xBD, 0x20, 0x65, 0x2B, 0x55, 0xB0, 0x65, 0xD1, 0x64, 0xA0,
+0x67, 0x14, 0x72, 0x30, 0x67, 0xB1, 0x46, 0xA0, 0x68, 0xF4, 0x54, 0x30, 0x69, 0x9A, 0x63, 0x20,
+0x6A, 0xD4, 0x36, 0x30, 0x6B, 0x7A, 0x45, 0x20, 0x6C, 0xB4, 0x18, 0x30, 0x6D, 0x5A, 0x27, 0x20,
+0x6E, 0x93, 0xFA, 0x30, 0x6F, 0x3A, 0x09, 0x20, 0x70, 0x7D, 0x16, 0xB0, 0x71, 0x19, 0xEB, 0x20,
+0x72, 0x5C, 0xF8, 0xB0, 0x72, 0xF9, 0xCD, 0x20, 0x74, 0x3C, 0xDA, 0xB0, 0x74, 0xD9, 0xAF, 0x20,
+0x76, 0x1C, 0xBC, 0xB0, 0x76, 0xC2, 0xCB, 0xA0, 0x77, 0xFC, 0x9E, 0xB0, 0x78, 0xAB, 0xE8, 0x20,
+0x79, 0xDC, 0x80, 0xB0, 0x7A, 0x82, 0x8F, 0xA0, 0x7B, 0xC5, 0x9D, 0x30, 0x7C, 0x62, 0x71, 0xA0,
+0x7D, 0xA5, 0x7F, 0x30, 0x7E, 0x4B, 0x8E, 0x20, 0x7F, 0x85, 0x61, 0x30, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0xFF, 0xFF, 0xD2, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x04, 0xFF, 0xFF, 0xD5,
-0xD0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x52, 0x53, 0x54, 0x00, 0x42, 0x52, 0x54, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x57, 0xC0, 0x00, 0xC9, 0x1C, 0x60, 0x00, 0x00,
-0x00, 0x09, 0x54, 0x6F, 0x63, 0x61, 0x6E, 0x74, 0x69, 0x6E, 0x73,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0xFF, 0xFF, 0xD2, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x04, 0xFF, 0xFF, 0xD5, 0xD0,
+0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x52, 0x53, 0x54, 0x00, 0x42, 0x52, 0x54, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x57, 0xC0, 0x00, 0xC9, 0x1C, 0x60, 0x00, 0x00, 0x00,
+0x09, 0x54, 0x6F, 0x63, 0x61, 0x6E, 0x74, 0x69, 0x6E, 0x73,
/* America/Argentina/Buenos_Aires */
0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1929,7 +1945,7 @@ const unsigned char timelib_timezone_db_data_builtin[258463] = {
/* America/Bahia */
0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x6B, 0x1C,
+0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x6B, 0x1C,
0xB8, 0x0F, 0x49, 0xE0, 0xB8, 0xFD, 0x40, 0xA0, 0xB9, 0xF1, 0x34, 0x30, 0xBA, 0xDE, 0x74, 0x20,
0xDA, 0x38, 0xAE, 0x30, 0xDA, 0xEB, 0xFA, 0x30, 0xDC, 0x19, 0xE1, 0xB0, 0xDC, 0xB9, 0x59, 0x20,
0xDD, 0xFB, 0x15, 0x30, 0xDE, 0x9B, 0xDE, 0x20, 0xDF, 0xDD, 0x9A, 0x30, 0xE0, 0x54, 0x33, 0x20,
@@ -1945,30 +1961,14 @@ const unsigned char timelib_timezone_db_data_builtin[258463] = {
0x36, 0x20, 0x1F, 0x30, 0x36, 0xCF, 0x68, 0xA0, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xB8, 0x85, 0x20,
0x39, 0xDF, 0xE3, 0x30, 0x3A, 0x8F, 0x2C, 0xA0, 0x3B, 0xC8, 0xFF, 0xB0, 0x3C, 0x6F, 0x0E, 0xA0,
0x3D, 0xC4, 0x91, 0x30, 0x3E, 0x4E, 0xF0, 0xA0, 0x4E, 0x9A, 0x48, 0xB0, 0x4F, 0x49, 0x92, 0x20,
-0x50, 0x83, 0x65, 0x30, 0x51, 0x20, 0x39, 0xA0, 0x52, 0x63, 0x47, 0x30, 0x53, 0x00, 0x1B, 0xA0,
-0x54, 0x43, 0x29, 0x30, 0x54, 0xE9, 0x38, 0x20, 0x56, 0x23, 0x0B, 0x30, 0x56, 0xC9, 0x1A, 0x20,
-0x58, 0x02, 0xED, 0x30, 0x58, 0xA8, 0xFC, 0x20, 0x59, 0xE2, 0xCF, 0x30, 0x5A, 0x88, 0xDE, 0x20,
-0x5B, 0xCB, 0xEB, 0xB0, 0x5C, 0x68, 0xC0, 0x20, 0x5D, 0xAB, 0xCD, 0xB0, 0x5E, 0x48, 0xA2, 0x20,
-0x5F, 0x8B, 0xAF, 0xB0, 0x60, 0x31, 0xBE, 0xA0, 0x61, 0x6B, 0x91, 0xB0, 0x62, 0x11, 0xA0, 0xA0,
-0x63, 0x4B, 0x73, 0xB0, 0x63, 0xFA, 0xBD, 0x20, 0x65, 0x2B, 0x55, 0xB0, 0x65, 0xD1, 0x64, 0xA0,
-0x67, 0x14, 0x72, 0x30, 0x67, 0xB1, 0x46, 0xA0, 0x68, 0xF4, 0x54, 0x30, 0x69, 0x9A, 0x63, 0x20,
-0x6A, 0xD4, 0x36, 0x30, 0x6B, 0x7A, 0x45, 0x20, 0x6C, 0xB4, 0x18, 0x30, 0x6D, 0x5A, 0x27, 0x20,
-0x6E, 0x93, 0xFA, 0x30, 0x6F, 0x3A, 0x09, 0x20, 0x70, 0x7D, 0x16, 0xB0, 0x71, 0x19, 0xEB, 0x20,
-0x72, 0x5C, 0xF8, 0xB0, 0x72, 0xF9, 0xCD, 0x20, 0x74, 0x3C, 0xDA, 0xB0, 0x74, 0xD9, 0xAF, 0x20,
-0x76, 0x1C, 0xBC, 0xB0, 0x76, 0xC2, 0xCB, 0xA0, 0x77, 0xFC, 0x9E, 0xB0, 0x78, 0xAB, 0xE8, 0x20,
-0x79, 0xDC, 0x80, 0xB0, 0x7A, 0x82, 0x8F, 0xA0, 0x7B, 0xC5, 0x9D, 0x30, 0x7C, 0x62, 0x71, 0xA0,
-0x7D, 0xA5, 0x7F, 0x30, 0x7E, 0x4B, 0x8E, 0x20, 0x7F, 0x85, 0x61, 0x30, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xDB, 0xE4,
-0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x09, 0x4C, 0x4D,
-0x54, 0x00, 0x42, 0x52, 0x53, 0x54, 0x00, 0x42, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x75, 0x84, 0xA2, 0x00, 0xD7, 0xE2, 0xED, 0x00, 0x00, 0x00, 0x05, 0x42, 0x61, 0x68,
-0x69, 0x61,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xDB,
+0xE4, 0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x09, 0x4C,
+0x4D, 0x54, 0x00, 0x42, 0x52, 0x53, 0x54, 0x00, 0x42, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x75, 0x84, 0xA2, 0x00, 0xD7, 0xE2, 0xED, 0x00, 0x00, 0x00, 0x05, 0x42, 0x61,
+0x68, 0x69, 0x61,
/* America/Bahia_Banderas */
0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -7498,7 +7498,7 @@ const unsigned char timelib_timezone_db_data_builtin[258463] = {
/* Asia/Amman */
0x50, 0x48, 0x50, 0x31, 0x01, 0x4A, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0xB6, 0xA3, 0xD6, 0xD0,
+0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0xB6, 0xA3, 0xD6, 0xD0,
0x06, 0x72, 0x79, 0xE0, 0x07, 0x0C, 0xAB, 0x50, 0x08, 0x24, 0x37, 0x60, 0x08, 0xED, 0xDE, 0xD0,
0x0A, 0x05, 0x6A, 0xE0, 0x0A, 0xCF, 0x12, 0x50, 0x0B, 0xE7, 0xEF, 0xE0, 0x0C, 0xDA, 0x75, 0xD0,
0x0D, 0xC9, 0x23, 0x60, 0x0E, 0x92, 0xCA, 0xD0, 0x0F, 0xA9, 0x05, 0x60, 0x10, 0x72, 0xAC, 0xD0,
@@ -7515,32 +7515,31 @@ const unsigned char timelib_timezone_db_data_builtin[258463] = {
0x42, 0x4C, 0x72, 0xE0, 0x43, 0x3C, 0x63, 0xE0, 0x44, 0x2C, 0x54, 0xE0, 0x45, 0x41, 0x2F, 0xE0,
0x46, 0x0C, 0x36, 0xE0, 0x47, 0x21, 0x11, 0xE0, 0x47, 0xEC, 0x18, 0xE0, 0x49, 0x0A, 0x2E, 0x60,
0x49, 0xCB, 0xFA, 0xE0, 0x4A, 0xEA, 0x10, 0x60, 0x4B, 0xAB, 0xDC, 0xE0, 0x4C, 0xC9, 0xF2, 0x60,
-0x4D, 0x94, 0xF9, 0x60, 0x4E, 0xA9, 0xD4, 0x60, 0x4F, 0x74, 0xDB, 0x60, 0x50, 0x89, 0xB6, 0x60,
-0x51, 0x54, 0xBD, 0x60, 0x52, 0x69, 0x98, 0x60, 0x53, 0x34, 0x9F, 0x60, 0x54, 0x52, 0xB4, 0xE0,
-0x55, 0x14, 0x81, 0x60, 0x56, 0x32, 0x96, 0xE0, 0x56, 0xFD, 0x9D, 0xE0, 0x58, 0x12, 0x78, 0xE0,
-0x58, 0xDD, 0x7F, 0xE0, 0x59, 0xF2, 0x5A, 0xE0, 0x5A, 0xBD, 0x61, 0xE0, 0x5B, 0xD2, 0x3C, 0xE0,
-0x5C, 0x9D, 0x43, 0xE0, 0x5D, 0xB2, 0x1E, 0xE0, 0x5E, 0x7D, 0x25, 0xE0, 0x5F, 0x9B, 0x3B, 0x60,
-0x60, 0x5D, 0x07, 0xE0, 0x61, 0x7B, 0x1D, 0x60, 0x62, 0x46, 0x24, 0x60, 0x63, 0x5A, 0xFF, 0x60,
-0x64, 0x26, 0x06, 0x60, 0x65, 0x3A, 0xE1, 0x60, 0x66, 0x05, 0xE8, 0x60, 0x67, 0x1A, 0xC3, 0x60,
-0x67, 0xE5, 0xCA, 0x60, 0x69, 0x03, 0xDF, 0xE0, 0x69, 0xC5, 0xAC, 0x60, 0x6A, 0xE3, 0xC1, 0xE0,
-0x6B, 0xA5, 0x8E, 0x60, 0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x8E, 0xAA, 0xE0, 0x6E, 0xA3, 0x85, 0xE0,
-0x6F, 0x6E, 0x8C, 0xE0, 0x70, 0x83, 0x67, 0xE0, 0x71, 0x4E, 0x6E, 0xE0, 0x72, 0x63, 0x49, 0xE0,
-0x73, 0x2E, 0x50, 0xE0, 0x74, 0x4C, 0x66, 0x60, 0x75, 0x0E, 0x32, 0xE0, 0x76, 0x2C, 0x48, 0x60,
-0x76, 0xF7, 0x4F, 0x60, 0x78, 0x0C, 0x2A, 0x60, 0x78, 0xD7, 0x31, 0x60, 0x79, 0xEC, 0x0C, 0x60,
-0x7A, 0xB7, 0x13, 0x60, 0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x96, 0xF5, 0x60, 0x7D, 0xB5, 0x0A, 0xE0,
-0x7E, 0x76, 0xD7, 0x60, 0x7F, 0x94, 0xEC, 0xE0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x4D, 0x94, 0xF9, 0x60, 0x4E, 0xA9, 0xD4, 0x60, 0x4F, 0x74, 0xDB, 0x60, 0x52, 0x69, 0x98, 0x60,
+0x53, 0x34, 0x9F, 0x60, 0x54, 0x52, 0xB4, 0xE0, 0x55, 0x14, 0x81, 0x60, 0x56, 0x32, 0x96, 0xE0,
+0x56, 0xFD, 0x9D, 0xE0, 0x58, 0x12, 0x78, 0xE0, 0x58, 0xDD, 0x7F, 0xE0, 0x59, 0xF2, 0x5A, 0xE0,
+0x5A, 0xBD, 0x61, 0xE0, 0x5B, 0xD2, 0x3C, 0xE0, 0x5C, 0x9D, 0x43, 0xE0, 0x5D, 0xB2, 0x1E, 0xE0,
+0x5E, 0x7D, 0x25, 0xE0, 0x5F, 0x9B, 0x3B, 0x60, 0x60, 0x5D, 0x07, 0xE0, 0x61, 0x7B, 0x1D, 0x60,
+0x62, 0x46, 0x24, 0x60, 0x63, 0x5A, 0xFF, 0x60, 0x64, 0x26, 0x06, 0x60, 0x65, 0x3A, 0xE1, 0x60,
+0x66, 0x05, 0xE8, 0x60, 0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE5, 0xCA, 0x60, 0x69, 0x03, 0xDF, 0xE0,
+0x69, 0xC5, 0xAC, 0x60, 0x6A, 0xE3, 0xC1, 0xE0, 0x6B, 0xA5, 0x8E, 0x60, 0x6C, 0xC3, 0xA3, 0xE0,
+0x6D, 0x8E, 0xAA, 0xE0, 0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x6E, 0x8C, 0xE0, 0x70, 0x83, 0x67, 0xE0,
+0x71, 0x4E, 0x6E, 0xE0, 0x72, 0x63, 0x49, 0xE0, 0x73, 0x2E, 0x50, 0xE0, 0x74, 0x4C, 0x66, 0x60,
+0x75, 0x0E, 0x32, 0xE0, 0x76, 0x2C, 0x48, 0x60, 0x76, 0xF7, 0x4F, 0x60, 0x78, 0x0C, 0x2A, 0x60,
+0x78, 0xD7, 0x31, 0x60, 0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xB7, 0x13, 0x60, 0x7B, 0xCB, 0xEE, 0x60,
+0x7C, 0x96, 0xF5, 0x60, 0x7D, 0xB5, 0x0A, 0xE0, 0x7E, 0x76, 0xD7, 0x60, 0x7F, 0x94, 0xEC, 0xE0,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01,
-0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x01,
0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01,
0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01,
0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01,
-0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x00,
-0x00, 0x21, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00,
-0x09, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x4C, 0x4D, 0x54,
-0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x14, 0xB8, 0x01, 0x49, 0x7C, 0xF5, 0x00, 0x00, 0x00, 0x00,
-
+0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01,
+0x03, 0x01, 0x03, 0x01, 0x03, 0x00, 0x00, 0x21, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01,
+0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A,
+0x30, 0x01, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00,
+0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x14, 0xB8, 0x01, 0x49,
+0x7C, 0xF5, 0x00, 0x00, 0x00, 0x00,
/* Asia/Anadyr */
0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -8373,19 +8372,19 @@ const unsigned char timelib_timezone_db_data_builtin[258463] = {
0x46, 0xEC, 0x63, 0xF0, 0x47, 0xEC, 0x35, 0x00, 0x48, 0xE7, 0xF5, 0x70, 0x49, 0xCC, 0x17, 0x00,
0x4A, 0xBE, 0x9C, 0xF0, 0x4B, 0xAB, 0xF9, 0x00, 0x4C, 0x8C, 0x09, 0xF0, 0x4D, 0x95, 0x15, 0x80,
0x4E, 0x87, 0x9B, 0x70, 0x4F, 0x74, 0xF7, 0x80, 0x50, 0x5E, 0x42, 0xF0, 0x51, 0x54, 0xD9, 0x80,
-0x52, 0x2B, 0xAF, 0xF0, 0x53, 0x34, 0xBB, 0x80, 0x54, 0x27, 0x41, 0x70, 0x55, 0x14, 0x9D, 0x80,
-0x55, 0xFD, 0xE8, 0xF0, 0x56, 0xFD, 0xBA, 0x00, 0x57, 0xF9, 0x7A, 0x70, 0x58, 0xDD, 0x9C, 0x00,
-0x59, 0xC6, 0xE7, 0x70, 0x5A, 0xBD, 0x7E, 0x00, 0x5B, 0x9D, 0x8E, 0xF0, 0x5C, 0x9D, 0x60, 0x00,
-0x5D, 0x99, 0x20, 0x70, 0x5E, 0x7D, 0x42, 0x00, 0x5F, 0x6F, 0xC7, 0xF0, 0x60, 0x5D, 0x24, 0x00,
-0x61, 0x3D, 0x34, 0xF0, 0x62, 0x46, 0x40, 0x80, 0x63, 0x38, 0xC6, 0x70, 0x64, 0x26, 0x22, 0x80,
-0x65, 0x0F, 0x6D, 0xF0, 0x66, 0x06, 0x04, 0x80, 0x67, 0x01, 0xC4, 0xF0, 0x67, 0xE5, 0xE6, 0x80,
-0x68, 0xD8, 0x6C, 0x70, 0x69, 0xC5, 0xC8, 0x80, 0x6A, 0xAF, 0x13, 0xF0, 0x6B, 0xA5, 0xAA, 0x80,
-0x6C, 0xAA, 0xA5, 0x70, 0x6D, 0x8E, 0xC7, 0x00, 0x6E, 0x78, 0x12, 0x70, 0x6F, 0x6E, 0xA9, 0x00,
-0x70, 0x4E, 0xB9, 0xF0, 0x71, 0x4E, 0x8B, 0x00, 0x72, 0x4A, 0x4B, 0x70, 0x73, 0x2E, 0x6D, 0x00,
-0x74, 0x17, 0xB8, 0x70, 0x75, 0x0E, 0x4F, 0x00, 0x75, 0xEE, 0x5F, 0xF0, 0x76, 0xF7, 0x6B, 0x80,
-0x77, 0xE9, 0xF1, 0x70, 0x78, 0xD7, 0x4D, 0x80, 0x79, 0xB7, 0x5E, 0x70, 0x7A, 0xB7, 0x2F, 0x80,
-0x7B, 0xB2, 0xEF, 0xF0, 0x7C, 0x97, 0x11, 0x80, 0x7D, 0x89, 0x97, 0x70, 0x7E, 0x76, 0xF3, 0x80,
-0x7F, 0x57, 0x04, 0x70, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03,
+0x52, 0x50, 0x99, 0xF0, 0x53, 0x34, 0xBB, 0x80, 0x54, 0x30, 0x7B, 0xF0, 0x55, 0x14, 0x9D, 0x80,
+0x56, 0x10, 0x5D, 0xF0, 0x56, 0xF4, 0x7F, 0x80, 0x57, 0xF0, 0x3F, 0xF0, 0x58, 0xD4, 0x61, 0x80,
+0x59, 0xD9, 0x5C, 0x70, 0x5A, 0xB4, 0x43, 0x80, 0x5B, 0xB9, 0x3E, 0x70, 0x5C, 0x9D, 0x60, 0x00,
+0x5D, 0x99, 0x20, 0x70, 0x5E, 0x7D, 0x42, 0x00, 0x5F, 0x79, 0x02, 0x70, 0x60, 0x5D, 0x24, 0x00,
+0x61, 0x58, 0xE4, 0x70, 0x62, 0x3D, 0x06, 0x00, 0x63, 0x38, 0xC6, 0x70, 0x64, 0x1C, 0xE8, 0x00,
+0x65, 0x21, 0xE2, 0xF0, 0x66, 0x06, 0x04, 0x80, 0x67, 0x01, 0xC4, 0xF0, 0x67, 0xE5, 0xE6, 0x80,
+0x68, 0xE1, 0xA6, 0xF0, 0x69, 0xC5, 0xC8, 0x80, 0x6A, 0xC1, 0x88, 0xF0, 0x6B, 0xA5, 0xAA, 0x80,
+0x6C, 0xA2, 0xBC, 0x70, 0x6D, 0x85, 0x8C, 0x80, 0x6E, 0x8A, 0x87, 0x70, 0x6F, 0x65, 0x6E, 0x80,
+0x70, 0x6A, 0x69, 0x70, 0x71, 0x4E, 0x8B, 0x00, 0x72, 0x4A, 0x4B, 0x70, 0x73, 0x2E, 0x6D, 0x00,
+0x74, 0x2A, 0x2D, 0x70, 0x75, 0x0E, 0x4F, 0x00, 0x76, 0x0A, 0x0F, 0x70, 0x76, 0xEE, 0x31, 0x00,
+0x77, 0xE9, 0xF1, 0x70, 0x78, 0xCE, 0x13, 0x00, 0x79, 0xD3, 0x0D, 0xF0, 0x7A, 0xAD, 0xF5, 0x00,
+0x7B, 0xB2, 0xEF, 0xF0, 0x7C, 0x97, 0x11, 0x80, 0x7D, 0x92, 0xD1, 0xF0, 0x7E, 0x76, 0xF3, 0x80,
+0x7F, 0x72, 0xB3, 0xF0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
@@ -9205,19 +9204,19 @@ const unsigned char timelib_timezone_db_data_builtin[258463] = {
0x46, 0xEC, 0x63, 0xF0, 0x47, 0xEC, 0x35, 0x00, 0x48, 0xE7, 0xF5, 0x70, 0x49, 0xCC, 0x17, 0x00,
0x4A, 0xBE, 0x9C, 0xF0, 0x4B, 0xAB, 0xF9, 0x00, 0x4C, 0x8C, 0x09, 0xF0, 0x4D, 0x95, 0x15, 0x80,
0x4E, 0x87, 0x9B, 0x70, 0x4F, 0x74, 0xF7, 0x80, 0x50, 0x5E, 0x42, 0xF0, 0x51, 0x54, 0xD9, 0x80,
-0x52, 0x2B, 0xAF, 0xF0, 0x53, 0x34, 0xBB, 0x80, 0x54, 0x27, 0x41, 0x70, 0x55, 0x14, 0x9D, 0x80,
-0x55, 0xFD, 0xE8, 0xF0, 0x56, 0xFD, 0xBA, 0x00, 0x57, 0xF9, 0x7A, 0x70, 0x58, 0xDD, 0x9C, 0x00,
-0x59, 0xC6, 0xE7, 0x70, 0x5A, 0xBD, 0x7E, 0x00, 0x5B, 0x9D, 0x8E, 0xF0, 0x5C, 0x9D, 0x60, 0x00,
-0x5D, 0x99, 0x20, 0x70, 0x5E, 0x7D, 0x42, 0x00, 0x5F, 0x6F, 0xC7, 0xF0, 0x60, 0x5D, 0x24, 0x00,
-0x61, 0x3D, 0x34, 0xF0, 0x62, 0x46, 0x40, 0x80, 0x63, 0x38, 0xC6, 0x70, 0x64, 0x26, 0x22, 0x80,
-0x65, 0x0F, 0x6D, 0xF0, 0x66, 0x06, 0x04, 0x80, 0x67, 0x01, 0xC4, 0xF0, 0x67, 0xE5, 0xE6, 0x80,
-0x68, 0xD8, 0x6C, 0x70, 0x69, 0xC5, 0xC8, 0x80, 0x6A, 0xAF, 0x13, 0xF0, 0x6B, 0xA5, 0xAA, 0x80,
-0x6C, 0xAA, 0xA5, 0x70, 0x6D, 0x8E, 0xC7, 0x00, 0x6E, 0x78, 0x12, 0x70, 0x6F, 0x6E, 0xA9, 0x00,
-0x70, 0x4E, 0xB9, 0xF0, 0x71, 0x4E, 0x8B, 0x00, 0x72, 0x4A, 0x4B, 0x70, 0x73, 0x2E, 0x6D, 0x00,
-0x74, 0x17, 0xB8, 0x70, 0x75, 0x0E, 0x4F, 0x00, 0x75, 0xEE, 0x5F, 0xF0, 0x76, 0xF7, 0x6B, 0x80,
-0x77, 0xE9, 0xF1, 0x70, 0x78, 0xD7, 0x4D, 0x80, 0x79, 0xB7, 0x5E, 0x70, 0x7A, 0xB7, 0x2F, 0x80,
-0x7B, 0xB2, 0xEF, 0xF0, 0x7C, 0x97, 0x11, 0x80, 0x7D, 0x89, 0x97, 0x70, 0x7E, 0x76, 0xF3, 0x80,
-0x7F, 0x57, 0x04, 0x70, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03,
+0x52, 0x50, 0x99, 0xF0, 0x53, 0x34, 0xBB, 0x80, 0x54, 0x30, 0x7B, 0xF0, 0x55, 0x14, 0x9D, 0x80,
+0x56, 0x10, 0x5D, 0xF0, 0x56, 0xF4, 0x7F, 0x80, 0x57, 0xF0, 0x3F, 0xF0, 0x58, 0xD4, 0x61, 0x80,
+0x59, 0xD9, 0x5C, 0x70, 0x5A, 0xB4, 0x43, 0x80, 0x5B, 0xB9, 0x3E, 0x70, 0x5C, 0x9D, 0x60, 0x00,
+0x5D, 0x99, 0x20, 0x70, 0x5E, 0x7D, 0x42, 0x00, 0x5F, 0x79, 0x02, 0x70, 0x60, 0x5D, 0x24, 0x00,
+0x61, 0x58, 0xE4, 0x70, 0x62, 0x3D, 0x06, 0x00, 0x63, 0x38, 0xC6, 0x70, 0x64, 0x1C, 0xE8, 0x00,
+0x65, 0x21, 0xE2, 0xF0, 0x66, 0x06, 0x04, 0x80, 0x67, 0x01, 0xC4, 0xF0, 0x67, 0xE5, 0xE6, 0x80,
+0x68, 0xE1, 0xA6, 0xF0, 0x69, 0xC5, 0xC8, 0x80, 0x6A, 0xC1, 0x88, 0xF0, 0x6B, 0xA5, 0xAA, 0x80,
+0x6C, 0xA2, 0xBC, 0x70, 0x6D, 0x85, 0x8C, 0x80, 0x6E, 0x8A, 0x87, 0x70, 0x6F, 0x65, 0x6E, 0x80,
+0x70, 0x6A, 0x69, 0x70, 0x71, 0x4E, 0x8B, 0x00, 0x72, 0x4A, 0x4B, 0x70, 0x73, 0x2E, 0x6D, 0x00,
+0x74, 0x2A, 0x2D, 0x70, 0x75, 0x0E, 0x4F, 0x00, 0x76, 0x0A, 0x0F, 0x70, 0x76, 0xEE, 0x31, 0x00,
+0x77, 0xE9, 0xF1, 0x70, 0x78, 0xCE, 0x13, 0x00, 0x79, 0xD3, 0x0D, 0xF0, 0x7A, 0xAD, 0xF5, 0x00,
+0x7B, 0xB2, 0xEF, 0xF0, 0x7C, 0x97, 0x11, 0x80, 0x7D, 0x92, 0xD1, 0xF0, 0x7E, 0x76, 0xF3, 0x80,
+0x7F, 0x72, 0xB3, 0xF0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
@@ -16062,19 +16061,19 @@ const unsigned char timelib_timezone_db_data_builtin[258463] = {
0x46, 0xEC, 0x63, 0xF0, 0x47, 0xEC, 0x35, 0x00, 0x48, 0xE7, 0xF5, 0x70, 0x49, 0xCC, 0x17, 0x00,
0x4A, 0xBE, 0x9C, 0xF0, 0x4B, 0xAB, 0xF9, 0x00, 0x4C, 0x8C, 0x09, 0xF0, 0x4D, 0x95, 0x15, 0x80,
0x4E, 0x87, 0x9B, 0x70, 0x4F, 0x74, 0xF7, 0x80, 0x50, 0x5E, 0x42, 0xF0, 0x51, 0x54, 0xD9, 0x80,
-0x52, 0x2B, 0xAF, 0xF0, 0x53, 0x34, 0xBB, 0x80, 0x54, 0x27, 0x41, 0x70, 0x55, 0x14, 0x9D, 0x80,
-0x55, 0xFD, 0xE8, 0xF0, 0x56, 0xFD, 0xBA, 0x00, 0x57, 0xF9, 0x7A, 0x70, 0x58, 0xDD, 0x9C, 0x00,
-0x59, 0xC6, 0xE7, 0x70, 0x5A, 0xBD, 0x7E, 0x00, 0x5B, 0x9D, 0x8E, 0xF0, 0x5C, 0x9D, 0x60, 0x00,
-0x5D, 0x99, 0x20, 0x70, 0x5E, 0x7D, 0x42, 0x00, 0x5F, 0x6F, 0xC7, 0xF0, 0x60, 0x5D, 0x24, 0x00,
-0x61, 0x3D, 0x34, 0xF0, 0x62, 0x46, 0x40, 0x80, 0x63, 0x38, 0xC6, 0x70, 0x64, 0x26, 0x22, 0x80,
-0x65, 0x0F, 0x6D, 0xF0, 0x66, 0x06, 0x04, 0x80, 0x67, 0x01, 0xC4, 0xF0, 0x67, 0xE5, 0xE6, 0x80,
-0x68, 0xD8, 0x6C, 0x70, 0x69, 0xC5, 0xC8, 0x80, 0x6A, 0xAF, 0x13, 0xF0, 0x6B, 0xA5, 0xAA, 0x80,
-0x6C, 0xAA, 0xA5, 0x70, 0x6D, 0x8E, 0xC7, 0x00, 0x6E, 0x78, 0x12, 0x70, 0x6F, 0x6E, 0xA9, 0x00,
-0x70, 0x4E, 0xB9, 0xF0, 0x71, 0x4E, 0x8B, 0x00, 0x72, 0x4A, 0x4B, 0x70, 0x73, 0x2E, 0x6D, 0x00,
-0x74, 0x17, 0xB8, 0x70, 0x75, 0x0E, 0x4F, 0x00, 0x75, 0xEE, 0x5F, 0xF0, 0x76, 0xF7, 0x6B, 0x80,
-0x77, 0xE9, 0xF1, 0x70, 0x78, 0xD7, 0x4D, 0x80, 0x79, 0xB7, 0x5E, 0x70, 0x7A, 0xB7, 0x2F, 0x80,
-0x7B, 0xB2, 0xEF, 0xF0, 0x7C, 0x97, 0x11, 0x80, 0x7D, 0x89, 0x97, 0x70, 0x7E, 0x76, 0xF3, 0x80,
-0x7F, 0x57, 0x04, 0x70, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03,
+0x52, 0x50, 0x99, 0xF0, 0x53, 0x34, 0xBB, 0x80, 0x54, 0x30, 0x7B, 0xF0, 0x55, 0x14, 0x9D, 0x80,
+0x56, 0x10, 0x5D, 0xF0, 0x56, 0xF4, 0x7F, 0x80, 0x57, 0xF0, 0x3F, 0xF0, 0x58, 0xD4, 0x61, 0x80,
+0x59, 0xD9, 0x5C, 0x70, 0x5A, 0xB4, 0x43, 0x80, 0x5B, 0xB9, 0x3E, 0x70, 0x5C, 0x9D, 0x60, 0x00,
+0x5D, 0x99, 0x20, 0x70, 0x5E, 0x7D, 0x42, 0x00, 0x5F, 0x79, 0x02, 0x70, 0x60, 0x5D, 0x24, 0x00,
+0x61, 0x58, 0xE4, 0x70, 0x62, 0x3D, 0x06, 0x00, 0x63, 0x38, 0xC6, 0x70, 0x64, 0x1C, 0xE8, 0x00,
+0x65, 0x21, 0xE2, 0xF0, 0x66, 0x06, 0x04, 0x80, 0x67, 0x01, 0xC4, 0xF0, 0x67, 0xE5, 0xE6, 0x80,
+0x68, 0xE1, 0xA6, 0xF0, 0x69, 0xC5, 0xC8, 0x80, 0x6A, 0xC1, 0x88, 0xF0, 0x6B, 0xA5, 0xAA, 0x80,
+0x6C, 0xA2, 0xBC, 0x70, 0x6D, 0x85, 0x8C, 0x80, 0x6E, 0x8A, 0x87, 0x70, 0x6F, 0x65, 0x6E, 0x80,
+0x70, 0x6A, 0x69, 0x70, 0x71, 0x4E, 0x8B, 0x00, 0x72, 0x4A, 0x4B, 0x70, 0x73, 0x2E, 0x6D, 0x00,
+0x74, 0x2A, 0x2D, 0x70, 0x75, 0x0E, 0x4F, 0x00, 0x76, 0x0A, 0x0F, 0x70, 0x76, 0xEE, 0x31, 0x00,
+0x77, 0xE9, 0xF1, 0x70, 0x78, 0xCE, 0x13, 0x00, 0x79, 0xD3, 0x0D, 0xF0, 0x7A, 0xAD, 0xF5, 0x00,
+0x7B, 0xB2, 0xEF, 0xF0, 0x7C, 0x97, 0x11, 0x80, 0x7D, 0x92, 0xD1, 0xF0, 0x7E, 0x76, 0xF3, 0x80,
+0x7F, 0x72, 0xB3, 0xF0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
@@ -18207,4 +18206,4 @@ const unsigned char timelib_timezone_db_data_builtin[258463] = {
0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80,
0x00, 0x00, 0x00, 0x00, };
-const timelib_tzdb timezonedb_builtin = { "2012.7", 576, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
+const timelib_tzdb timezonedb_builtin = { "2012.8", 576, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
diff --git a/ext/gd/config.w32 b/ext/gd/config.w32
index 38292d52f4..8c932a037c 100644
--- a/ext/gd/config.w32
+++ b/ext/gd/config.w32
@@ -15,7 +15,9 @@ if (PHP_GD != "no") {
(CHECK_LIB("libiconv_a.lib;libiconv.lib", "gd", PHP_GD) || CHECK_LIB("iconv_a.lib;iconv.lib", "gd", PHP_GD)) &&
CHECK_HEADER_ADD_INCLUDE("iconv.h", "CFLAGS_GD", PHP_GD) &&
(((PHP_ZLIB=="no") && (CHECK_LIB("zlib_a.lib;zlib.lib", "gd", PHP_GD) )) ||
- (PHP_ZLIB_SHARED && CHECK_LIB("zlib.lib", "gd", PHP_GD)) || (PHP_ZLIB == "yes" && (!PHP_ZLIB_SHARED)))
+ (PHP_ZLIB_SHARED && CHECK_LIB("zlib.lib", "gd", PHP_GD)) || (PHP_ZLIB == "yes" && (!PHP_ZLIB_SHARED))) &&
+ CHECK_LIB("libXpm_a.lib", "gd", PHP_GD) &&
+ CHECK_HEADER_ADD_INCLUDE("xpm.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\X11")
) {
if (PHP_T1LIB != "no") {
if (CHECK_LIB("T1_StaticMD.lib", "gd", PHP_GD) &&
@@ -56,6 +58,7 @@ if (PHP_GD != "no") {
/D HAVE_GD_STRINGTTF=1 \
/D HAVE_GD_WBMP \
/D HAVE_GD_XBM \
+/D HAVE_GD_XPM \
/D HAVE_GD_WEBP \
/D HAVE_LIBFREETYPE=1 \
/D HAVE_LIBGD13=1 \
@@ -65,6 +68,7 @@ if (PHP_GD != "no") {
/D HAVE_LIBJPEG \
/D HAVE_LIBVPX \
/D HAVE_LIBPNG \
+/D HAVE_XPM \
/D HAVE_COLORCLOSESTHWB \
/D USE_GD_IMGSTRTTF \
/D USE_GD_IOCTX \
diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c
index a39c875b2c..c97ee6724d 100644
--- a/ext/libxml/libxml.c
+++ b/ext/libxml/libxml.c
@@ -918,7 +918,7 @@ static PHP_FUNCTION(libxml_set_streams_context)
{
zval *arg;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &arg) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &arg) == FAILURE) {
return;
}
if (LIBXML(stream_context)) {
diff --git a/ext/libxml/tests/004.phpt b/ext/libxml/tests/004.phpt
index 8bdf593b93..aa87ab7503 100644
--- a/ext/libxml/tests/004.phpt
+++ b/ext/libxml/tests/004.phpt
@@ -27,26 +27,26 @@ echo "Done\n";
?>
--EXPECTF--
-Warning: stream_context_create(): options should have the form ["wrappername"]["optionname"] = $value in %s004.php on line 10
-NULL
+Warning: stream_context_create(): options should have the form ["wrappername"]["optionname"] = $value in %s004.php on line %d
-Warning: DOMDocument::load(): supplied argument is not a valid Stream-Context resource in %s004.php on line 18
-bool(true)
+Warning: libxml_set_streams_context() expects parameter 1 to be resource, null given in %s004.php on line %d
NULL
-
-Warning: DOMDocument::load(): supplied argument is not a valid Stream-Context resource in %s004.php on line 18
bool(true)
-NULL
-Warning: DOMDocument::load(): supplied argument is not a valid Stream-Context resource in %s004.php on line 18
-bool(true)
+Warning: libxml_set_streams_context() expects parameter 1 to be resource, string given in %s004.php on line %d
NULL
+bool(true)
-Warning: DOMDocument::load(): supplied argument is not a valid Stream-Context resource in %s004.php on line 18
+Warning: libxml_set_streams_context() expects parameter 1 to be resource, integer given in %s004.php on line %d
+NULL
bool(true)
+
+Warning: libxml_set_streams_context() expects parameter 1 to be resource, object given in %s004.php on line %d
NULL
+bool(true)
-Warning: DOMDocument::load(): supplied argument is not a valid Stream-Context resource in %s004.php on line 18
+Warning: libxml_set_streams_context() expects parameter 1 to be resource, array given in %s004.php on line %d
+NULL
bool(true)
NULL
bool(true)
diff --git a/ext/libxml/tests/bug63389.phpt b/ext/libxml/tests/bug63389.phpt
new file mode 100644
index 0000000000..e9498aae08
--- /dev/null
+++ b/ext/libxml/tests/bug63389.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Bug #63389 (Missing context check on libxml_set_streams_context() causes memleak)
+--SKIPIF--
+<?php if (!extension_loaded('libxml')) die('skip'); ?>
+--FILE--
+<?php
+$fp = fopen("php://input", "r");
+libxml_set_streams_context($fp);
+libxml_set_streams_context("a");
+echo "okey";
+?>
+--EXPECTF--
+Warning: libxml_set_streams_context() expects parameter 1 to be resource, string given in %sbug63389.php on line %d
+okey
diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c
index d6a0c94677..f1aab94f8a 100644
--- a/ext/mysql/php_mysql.c
+++ b/ext/mysql/php_mysql.c
@@ -297,27 +297,27 @@ static const zend_function_entry mysql_functions[] = {
PHP_FE(mysql_set_charset, arginfo_mysql_set_charset)
#endif
/* for downwards compatability */
- PHP_FALIAS(mysql, mysql_db_query, arginfo_mysql_db_query)
- PHP_FALIAS(mysql_fieldname, mysql_field_name, arginfo_mysql_field_name)
- PHP_FALIAS(mysql_fieldtable, mysql_field_table, arginfo_mysql_field_seek)
- PHP_FALIAS(mysql_fieldlen, mysql_field_len, arginfo_mysql_field_seek)
- PHP_FALIAS(mysql_fieldtype, mysql_field_type, arginfo_mysql_field_seek)
- PHP_FALIAS(mysql_fieldflags, mysql_field_flags, arginfo_mysql_field_seek)
- PHP_FALIAS(mysql_selectdb, mysql_select_db, arginfo_mysql_select_db)
+ PHP_DEP_FALIAS(mysql, mysql_db_query, arginfo_mysql_db_query)
+ PHP_DEP_FALIAS(mysql_fieldname, mysql_field_name, arginfo_mysql_field_name)
+ PHP_DEP_FALIAS(mysql_fieldtable, mysql_field_table, arginfo_mysql_field_seek)
+ PHP_DEP_FALIAS(mysql_fieldlen, mysql_field_len, arginfo_mysql_field_seek)
+ PHP_DEP_FALIAS(mysql_fieldtype, mysql_field_type, arginfo_mysql_field_seek)
+ PHP_DEP_FALIAS(mysql_fieldflags, mysql_field_flags, arginfo_mysql_field_seek)
+ PHP_DEP_FALIAS(mysql_selectdb, mysql_select_db, arginfo_mysql_select_db)
#ifndef NETWARE /* The below two functions not supported on NetWare */
#if MYSQL_VERSION_ID < 40000
PHP_DEP_FALIAS(mysql_createdb, mysql_create_db, arginfo_mysql_select_db)
PHP_DEP_FALIAS(mysql_dropdb, mysql_drop_db, arginfo_mysql_select_db)
#endif
#endif /* NETWARE */
- PHP_FALIAS(mysql_freeresult, mysql_free_result, arginfo__result_mysql_arg)
- PHP_FALIAS(mysql_numfields, mysql_num_fields, arginfo__result_mysql_arg)
- PHP_FALIAS(mysql_numrows, mysql_num_rows, arginfo__result_mysql_arg)
- PHP_FALIAS(mysql_listdbs, mysql_list_dbs, arginfo__optional_mysql_link)
+ PHP_DEP_FALIAS(mysql_freeresult, mysql_free_result, arginfo__result_mysql_arg)
+ PHP_DEP_FALIAS(mysql_numfields, mysql_num_fields, arginfo__result_mysql_arg)
+ PHP_DEP_FALIAS(mysql_numrows, mysql_num_rows, arginfo__result_mysql_arg)
+ PHP_DEP_FALIAS(mysql_listdbs, mysql_list_dbs, arginfo__optional_mysql_link)
PHP_DEP_FALIAS(mysql_listtables,mysql_list_tables, arginfo_mysql_select_db)
- PHP_FALIAS(mysql_listfields, mysql_list_fields, arginfo_mysql_list_fields)
+ PHP_DEP_FALIAS(mysql_listfields, mysql_list_fields, arginfo_mysql_list_fields)
PHP_FALIAS(mysql_db_name, mysql_result, arginfo_mysql_result)
- PHP_FALIAS(mysql_dbname, mysql_result, arginfo_mysql_result)
+ PHP_DEP_FALIAS(mysql_dbname, mysql_result, arginfo_mysql_result)
PHP_FALIAS(mysql_tablename, mysql_result, arginfo_mysql_result)
PHP_FALIAS(mysql_table_name, mysql_result, arginfo_mysql_result)
PHP_FE_END
@@ -1989,16 +1989,16 @@ Q: String or long first?
if (sql_row[field_offset]) {
Z_TYPE_P(return_value) = IS_STRING;
-#if PHP_API_VERSION < 20100412
+#if PHP_API_VERSION < 20100412
if (PG(magic_quotes_runtime)) {
Z_STRVAL_P(return_value) = php_addslashes(sql_row[field_offset], sql_row_lengths[field_offset],&Z_STRLEN_P(return_value), 0 TSRMLS_CC);
} else {
-#endif
+#endif
Z_STRLEN_P(return_value) = sql_row_lengths[field_offset];
Z_STRVAL_P(return_value) = (char *) safe_estrndup(sql_row[field_offset], Z_STRLEN_P(return_value));
#if PHP_API_VERSION < 20100412
}
-#endif
+#endif
} else {
Z_TYPE_P(return_value) = IS_NULL;
}
@@ -2116,16 +2116,16 @@ static void php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, long result_type,
MAKE_STD_ZVAL(data);
-#if PHP_API_VERSION < 20100412
+#if PHP_API_VERSION < 20100412
if (PG(magic_quotes_runtime)) {
Z_TYPE_P(data) = IS_STRING;
Z_STRVAL_P(data) = php_addslashes(mysql_row[i], mysql_row_lengths[i], &Z_STRLEN_P(data), 0 TSRMLS_CC);
} else {
-#endif
+#endif
ZVAL_STRINGL(data, mysql_row[i], mysql_row_lengths[i], 1);
-#if PHP_API_VERSION < 20100412
+#if PHP_API_VERSION < 20100412
}
-#endif
+#endif
if (result_type & MYSQL_NUM) {
add_index_zval(return_value, i, data);
diff --git a/ext/mysql/tests/mysql_reflection_extension.phpt b/ext/mysql/tests/mysql_reflection_extension.phpt
new file mode 100644
index 0000000000..169036cd54
--- /dev/null
+++ b/ext/mysql/tests/mysql_reflection_extension.phpt
@@ -0,0 +1,105 @@
+--TEST--
+ReflectionExtension basics to check API
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+?>
+--FILE--
+<?php
+ $r = new ReflectionExtension("mysql");
+
+ printf("Name: %s\n", $r->name);
+ printf("Version: %s\n", $r->getVersion());
+ $classes = $r->getClasses();
+ if (!empty($classes)) {
+ printf("[002] Expecting no class\n");
+ asort($classes);
+ var_dump($classes);
+ }
+
+ $ignore = array();
+
+ $functions = $r->getFunctions();
+ asort($functions);
+ printf("Functions:\n");
+ foreach ($functions as $func) {
+ if (isset($ignore[$func->name])) {
+ unset($ignore[$func->name]);
+ } else {
+ printf(" %s\n", $func->name);
+ }
+ }
+ if (!empty($ignore)) {
+ printf("Dumping version dependent and missing functions\n");
+ var_dump($ignore);
+ }
+
+
+ print "done!";
+?>
+--EXPECTF--
+Name: mysql
+Version: 1.0
+Functions:
+ mysql
+ mysql_affected_rows
+ mysql_client_encoding
+ mysql_close
+ mysql_connect
+ mysql_data_seek
+ mysql_db_name
+ mysql_db_query
+ mysql_dbname
+ mysql_errno
+ mysql_error
+ mysql_escape_string
+ mysql_fetch_array
+ mysql_fetch_assoc
+ mysql_fetch_field
+ mysql_fetch_lengths
+ mysql_fetch_object
+ mysql_fetch_row
+ mysql_field_flags
+ mysql_field_len
+ mysql_field_name
+ mysql_field_seek
+ mysql_field_table
+ mysql_field_type
+ mysql_fieldflags
+ mysql_fieldlen
+ mysql_fieldname
+ mysql_fieldtable
+ mysql_fieldtype
+ mysql_free_result
+ mysql_freeresult
+ mysql_get_client_info
+ mysql_get_host_info
+ mysql_get_proto_info
+ mysql_get_server_info
+ mysql_info
+ mysql_insert_id
+ mysql_list_dbs
+ mysql_list_fields
+ mysql_list_processes
+ mysql_list_tables
+ mysql_listdbs
+ mysql_listfields
+ mysql_listtables
+ mysql_num_fields
+ mysql_num_rows
+ mysql_numfields
+ mysql_numrows
+ mysql_pconnect
+ mysql_ping
+ mysql_query
+ mysql_real_escape_string
+ mysql_result
+ mysql_select_db
+ mysql_selectdb
+ mysql_set_charset
+ mysql_stat
+ mysql_table_name
+ mysql_tablename
+ mysql_thread_id
+ mysql_unbuffered_query
+done! \ No newline at end of file
diff --git a/ext/mysql/tests/mysql_reflection_functions.phpt b/ext/mysql/tests/mysql_reflection_functions.phpt
new file mode 100644
index 0000000000..4f2710d806
--- /dev/null
+++ b/ext/mysql/tests/mysql_reflection_functions.phpt
@@ -0,0 +1,387 @@
+--TEST--
+ReflectionFunction to check API
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+?>
+--FILE--
+<?php
+ $r = new ReflectionExtension("mysql");
+
+ $ignore = array();
+
+ $functions = $r->getFunctions();
+ asort($functions);
+ printf("Functions:\n");
+ foreach ($functions as $func) {
+ if (isset($ignore[$func->name]))
+ continue;
+
+ printf(" %s\n", $func->name);
+ $rf = new ReflectionFunction($func->name);
+ printf(" Deprecated: %s\n", $rf->isDeprecated() ? "yes" : "no");
+ printf(" Accepted parameters: %d\n", $rf->getNumberOfParameters());
+ printf(" Required parameters: %d\n", $rf->getNumberOfRequiredParameters());
+ foreach( $rf->getParameters() as $param ) {
+ printf(" %s\n", $param);
+ }
+ }
+
+ print "done!";
+?>
+--EXPECTF--
+Functions:
+ mysql
+ Deprecated: yes
+ Accepted parameters: 3
+ Required parameters: 2
+ Parameter #0 [ <required> $database_name ]
+ Parameter #1 [ <required> $query ]
+ Parameter #2 [ <optional> $link_identifier ]
+ mysql_affected_rows
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_client_encoding
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_close
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_connect
+ Deprecated: no
+ Accepted parameters: 5
+ Required parameters: 0
+ Parameter #0 [ <optional> $hostname ]
+ Parameter #1 [ <optional> $username ]
+ Parameter #2 [ <optional> $password ]
+ Parameter #3 [ <optional> $new ]
+ Parameter #4 [ <optional> $flags ]
+ mysql_data_seek
+ Deprecated: no
+ Accepted parameters: 2
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $row_number ]
+ mysql_db_name
+ Deprecated: no
+ Accepted parameters: 3
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $row ]
+ Parameter #2 [ <optional> $field ]
+ mysql_db_query
+ Deprecated: yes
+ Accepted parameters: 3
+ Required parameters: 2
+ Parameter #0 [ <required> $database_name ]
+ Parameter #1 [ <required> $query ]
+ Parameter #2 [ <optional> $link_identifier ]
+ mysql_dbname
+ Deprecated: yes
+ Accepted parameters: 3
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $row ]
+ Parameter #2 [ <optional> $field ]
+ mysql_errno
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_error
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_escape_string
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 1
+ Parameter #0 [ <required> $string ]
+ mysql_fetch_array
+ Deprecated: no
+ Accepted parameters: 2
+ Required parameters: 1
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <optional> $result_type ]
+ mysql_fetch_assoc
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 1
+ Parameter #0 [ <required> $result ]
+ mysql_fetch_field
+ Deprecated: no
+ Accepted parameters: 2
+ Required parameters: 1
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <optional> $field_offset ]
+ mysql_fetch_lengths
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 1
+ Parameter #0 [ <required> $result ]
+ mysql_fetch_object
+ Deprecated: no
+ Accepted parameters: 3
+ Required parameters: 1
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <optional> $class_name ]
+ Parameter #2 [ <optional> $ctor_params ]
+ mysql_fetch_row
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 1
+ Parameter #0 [ <required> $result ]
+ mysql_field_flags
+ Deprecated: no
+ Accepted parameters: 2
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $field_offset ]
+ mysql_field_len
+ Deprecated: no
+ Accepted parameters: 2
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $field_offset ]
+ mysql_field_name
+ Deprecated: no
+ Accepted parameters: 2
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $field_index ]
+ mysql_field_seek
+ Deprecated: no
+ Accepted parameters: 2
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $field_offset ]
+ mysql_field_table
+ Deprecated: no
+ Accepted parameters: 2
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $field_offset ]
+ mysql_field_type
+ Deprecated: no
+ Accepted parameters: 2
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $field_offset ]
+ mysql_fieldflags
+ Deprecated: yes
+ Accepted parameters: 2
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $field_offset ]
+ mysql_fieldlen
+ Deprecated: yes
+ Accepted parameters: 2
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $field_offset ]
+ mysql_fieldname
+ Deprecated: yes
+ Accepted parameters: 2
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $field_index ]
+ mysql_fieldtable
+ Deprecated: yes
+ Accepted parameters: 2
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $field_offset ]
+ mysql_fieldtype
+ Deprecated: yes
+ Accepted parameters: 2
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $field_offset ]
+ mysql_free_result
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 1
+ Parameter #0 [ <required> $result ]
+ mysql_freeresult
+ Deprecated: yes
+ Accepted parameters: 1
+ Required parameters: 1
+ Parameter #0 [ <required> $result ]
+ mysql_get_client_info
+ Deprecated: no
+ Accepted parameters: 0
+ Required parameters: 0
+ mysql_get_host_info
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_get_proto_info
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_get_server_info
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_info
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_insert_id
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_list_dbs
+ Deprecated: yes
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_list_fields
+ Deprecated: no
+ Accepted parameters: 3
+ Required parameters: 2
+ Parameter #0 [ <required> $database_name ]
+ Parameter #1 [ <required> $table_name ]
+ Parameter #2 [ <optional> $link_identifier ]
+ mysql_list_processes
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_list_tables
+ Deprecated: yes
+ Accepted parameters: 2
+ Required parameters: 1
+ Parameter #0 [ <required> $database_name ]
+ Parameter #1 [ <optional> $link_identifier ]
+ mysql_listdbs
+ Deprecated: yes
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_listfields
+ Deprecated: yes
+ Accepted parameters: 3
+ Required parameters: 2
+ Parameter #0 [ <required> $database_name ]
+ Parameter #1 [ <required> $table_name ]
+ Parameter #2 [ <optional> $link_identifier ]
+ mysql_listtables
+ Deprecated: yes
+ Accepted parameters: 2
+ Required parameters: 1
+ Parameter #0 [ <required> $database_name ]
+ Parameter #1 [ <optional> $link_identifier ]
+ mysql_num_fields
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 1
+ Parameter #0 [ <required> $result ]
+ mysql_num_rows
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 1
+ Parameter #0 [ <required> $result ]
+ mysql_numfields
+ Deprecated: yes
+ Accepted parameters: 1
+ Required parameters: 1
+ Parameter #0 [ <required> $result ]
+ mysql_numrows
+ Deprecated: yes
+ Accepted parameters: 1
+ Required parameters: 1
+ Parameter #0 [ <required> $result ]
+ mysql_pconnect
+ Deprecated: no
+ Accepted parameters: 4
+ Required parameters: 0
+ Parameter #0 [ <optional> $hostname ]
+ Parameter #1 [ <optional> $username ]
+ Parameter #2 [ <optional> $password ]
+ Parameter #3 [ <optional> $flags ]
+ mysql_ping
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_query
+ Deprecated: no
+ Accepted parameters: 2
+ Required parameters: 1
+ Parameter #0 [ <required> $query ]
+ Parameter #1 [ <optional> $link_identifier ]
+ mysql_real_escape_string
+ Deprecated: no
+ Accepted parameters: 2
+ Required parameters: 1
+ Parameter #0 [ <required> $string ]
+ Parameter #1 [ <optional> $link_identifier ]
+ mysql_result
+ Deprecated: no
+ Accepted parameters: 3
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $row ]
+ Parameter #2 [ <optional> $field ]
+ mysql_select_db
+ Deprecated: no
+ Accepted parameters: 2
+ Required parameters: 1
+ Parameter #0 [ <required> $database_name ]
+ Parameter #1 [ <optional> $link_identifier ]
+ mysql_selectdb
+ Deprecated: yes
+ Accepted parameters: 2
+ Required parameters: 1
+ Parameter #0 [ <required> $database_name ]
+ Parameter #1 [ <optional> $link_identifier ]
+ mysql_set_charset
+ Deprecated: no
+ Accepted parameters: 2
+ Required parameters: 1
+ Parameter #0 [ <required> $charset_name ]
+ Parameter #1 [ <optional> $link_identifier ]
+ mysql_stat
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_table_name
+ Deprecated: no
+ Accepted parameters: 3
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $row ]
+ Parameter #2 [ <optional> $field ]
+ mysql_tablename
+ Deprecated: no
+ Accepted parameters: 3
+ Required parameters: 2
+ Parameter #0 [ <required> $result ]
+ Parameter #1 [ <required> $row ]
+ Parameter #2 [ <optional> $field ]
+ mysql_thread_id
+ Deprecated: no
+ Accepted parameters: 1
+ Required parameters: 0
+ Parameter #0 [ <optional> $link_identifier ]
+ mysql_unbuffered_query
+ Deprecated: no
+ Accepted parameters: 2
+ Required parameters: 1
+ Parameter #0 [ <required> $query ]
+ Parameter #1 [ <optional> $link_identifier ]
+done! \ No newline at end of file
diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c
index 6d393a26a7..ab33881f35 100644
--- a/ext/pcre/php_pcre.c
+++ b/ext/pcre/php_pcre.c
@@ -248,6 +248,7 @@ PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache(char *regex, int regex_le
#endif
pcre_cache_entry *pce;
pcre_cache_entry new_entry;
+ char *tmp = NULL;
/* Try to lookup the cached regex entry, and if successful, just pass
back the compiled pattern, otherwise go on and compile it. */
@@ -438,9 +439,26 @@ PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache(char *regex, int regex_le
new_entry.locale = pestrdup(locale, 1);
new_entry.tables = tables;
#endif
+
+ /*
+ * Interned strings are not duplicated when stored in HashTable,
+ * but all the interned strings created during HTTP request are removed
+ * at end of request. However PCRE_G(pcre_cache) must be consistent
+ * on the next request as well. So we disable usage of interned strings
+ * as hash keys especually for this table.
+ * See bug #63180
+ */
+ if (IS_INTERNED(regex)) {
+ regex = tmp = estrndup(regex, regex_len);
+ }
+
zend_hash_update(&PCRE_G(pcre_cache), regex, regex_len+1, (void *)&new_entry,
sizeof(pcre_cache_entry), (void**)&pce);
+ if (tmp) {
+ efree(tmp);
+ }
+
return pce;
}
/* }}} */
diff --git a/ext/pdo_mysql/mysql_statement.c b/ext/pdo_mysql/mysql_statement.c
index fc5ec5135b..7bfbef015c 100644
--- a/ext/pdo_mysql/mysql_statement.c
+++ b/ext/pdo_mysql/mysql_statement.c
@@ -75,13 +75,13 @@ static int pdo_mysql_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */
efree(S->in_length);
}
- if (S->bound_result)
+ if (S->bound_result)
{
int i;
for (i = 0; i < stmt->column_count; i++) {
pdo_free_bound_result(S->bound_result[i]);
}
-
+
efree(S->bound_result);
efree(S->out_null);
efree(S->out_length);
@@ -95,7 +95,7 @@ static int pdo_mysql_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */
if (mysql_next_result(S->H->server) != 0) {
break;
}
-
+
res = mysql_store_result(S->H->server);
if (res) {
mysql_free_result(res);
@@ -180,23 +180,23 @@ static int pdo_mysql_stmt_execute_prepared_libmysql(pdo_stmt_t *stmt TSRMLS_DC)
}
if (!S->result) {
- int i;
-
- /* figure out the result set format, if any */
- S->result = mysql_stmt_result_metadata(S->stmt);
- if (S->result) {
- int calc_max_length = H->buffered && S->max_length == 1;
- S->fields = mysql_fetch_fields(S->result);
- if (S->bound_result) {
- int i;
- for (i = 0; i < stmt->column_count; i++) {
- efree(S->bound_result[i].buffer);
- }
- efree(S->bound_result);
- efree(S->out_null);
- efree(S->out_length);
+ int i;
+
+ /* figure out the result set format, if any */
+ S->result = mysql_stmt_result_metadata(S->stmt);
+ if (S->result) {
+ int calc_max_length = H->buffered && S->max_length == 1;
+ S->fields = mysql_fetch_fields(S->result);
+ if (S->bound_result) {
+ int i;
+ for (i = 0; i < stmt->column_count; i++) {
+ efree(S->bound_result[i].buffer);
+ }
+ efree(S->bound_result);
+ efree(S->out_null);
+ efree(S->out_length);
}
-
+
stmt->column_count = (int)mysql_num_fields(S->result);
S->bound_result = ecalloc(stmt->column_count, sizeof(MYSQL_BIND));
S->out_null = ecalloc(stmt->column_count, sizeof(my_bool));
@@ -262,7 +262,7 @@ static int pdo_mysql_stmt_execute_prepared_libmysql(pdo_stmt_t *stmt TSRMLS_DC)
}
}
}
-
+
pdo_mysql_stmt_set_row_count(stmt TSRMLS_CC);
PDO_DBG_RETURN(1);
}
@@ -275,9 +275,9 @@ static int pdo_mysql_stmt_execute_prepared_mysqlnd(pdo_stmt_t *stmt TSRMLS_DC) /
pdo_mysql_stmt *S = stmt->driver_data;
pdo_mysql_db_handle *H = S->H;
int i;
-
+
PDO_DBG_ENTER("pdo_mysql_stmt_execute_prepared_mysqlnd");
-
+
if (mysql_stmt_execute(S->stmt)) {
pdo_mysql_error_stmt(stmt);
PDO_DBG_RETURN(0);
@@ -305,7 +305,7 @@ static int pdo_mysql_stmt_execute_prepared_mysqlnd(pdo_stmt_t *stmt TSRMLS_DC) /
}
}
}
-
+
pdo_mysql_stmt_set_row_count(stmt TSRMLS_CC);
PDO_DBG_RETURN(1);
}
@@ -322,7 +322,7 @@ static int pdo_mysql_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */
if (S->stmt) {
PDO_DBG_RETURN(pdo_mysql_stmt_execute_prepared(stmt));
}
-
+
/* ensure that we free any previous unfetched results */
if (S->result) {
mysql_free_result(S->result);
@@ -357,8 +357,8 @@ static int pdo_mysql_stmt_next_rowset(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */
}
if (!mysqlnd_stmt_more_results(S->stmt)) {
- /*
- MySQL gives us n + 1 result sets for
+ /*
+ MySQL gives us n + 1 result sets for
CALL proc() and n result sets returned by the proc itself.
Result set n + 1 is about the procedure call itself.
As the PDO emulation does not return it, we skip it as well
@@ -413,7 +413,19 @@ static int pdo_mysql_stmt_next_rowset(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */
}
ret = mysql_next_result(H->server);
-
+#if PDO_USE_MYSQLND
+ /* for whatever reason mysqlnd breaks with libmysql compatibility at the C level, no -1 */
+ if (PASS != ret) {
+ pdo_mysql_error_stmt(stmt);
+ PDO_DBG_RETURN(0);
+ }
+ if (mysql_more_results(H->server)) {
+ PDO_DBG_RETURN(pdo_mysql_fill_stmt_from_result(stmt TSRMLS_CC));
+ } else {
+ /* No more results */
+ PDO_DBG_RETURN(0);
+ }
+#else
if (ret > 0) {
pdo_mysql_error_stmt(stmt);
PDO_DBG_RETURN(0);
@@ -423,6 +435,7 @@ static int pdo_mysql_stmt_next_rowset(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */
} else {
PDO_DBG_RETURN(pdo_mysql_fill_stmt_from_result(stmt TSRMLS_CC));
}
+#endif
}
/* }}} */
@@ -444,7 +457,7 @@ static int pdo_mysql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_da
#ifndef PDO_USE_MYSQLND
PDO_MYSQL_PARAM_BIND *b;
#endif
- pdo_mysql_stmt *S = (pdo_mysql_stmt*)stmt->driver_data;
+ pdo_mysql_stmt *S = (pdo_mysql_stmt*)stmt->driver_data;
PDO_DBG_ENTER("pdo_mysql_stmt_param_hook");
PDO_DBG_INF_FMT("stmt=%p", S->stmt);
@@ -484,18 +497,18 @@ static int pdo_mysql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_da
}
#else
b = (PDO_MYSQL_PARAM_BIND*)param->driver_data;
- *b->is_null = 0;
- if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_NULL ||
- Z_TYPE_P(param->parameter) == IS_NULL) {
- *b->is_null = 1;
- b->buffer_type = MYSQL_TYPE_STRING;
- b->buffer = NULL;
- b->buffer_length = 0;
- *b->length = 0;
+ *b->is_null = 0;
+ if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_NULL ||
+ Z_TYPE_P(param->parameter) == IS_NULL) {
+ *b->is_null = 1;
+ b->buffer_type = MYSQL_TYPE_STRING;
+ b->buffer = NULL;
+ b->buffer_length = 0;
+ *b->length = 0;
PDO_DBG_RETURN(1);
- }
+ }
#endif /* PDO_USE_MYSQLND */
-
+
switch (PDO_PARAM_TYPE(param->param_type)) {
case PDO_PARAM_STMT:
PDO_DBG_RETURN(0);
@@ -519,7 +532,7 @@ static int pdo_mysql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_da
default:
;
}
-
+
#if PDO_USE_MYSQLND
/* Is it really correct to check the zval's type? - But well, that's what the old code below does, too */
PDO_DBG_INF_FMT("param->parameter->type=%d", Z_TYPE_P(param->parameter));
@@ -540,9 +553,9 @@ static int pdo_mysql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_da
default:
PDO_DBG_RETURN(0);
}
-
+
PDO_DBG_RETURN(1);
-#else
+#else
PDO_DBG_INF_FMT("param->parameter->type=%d", Z_TYPE_P(param->parameter));
switch (Z_TYPE_P(param->parameter)) {
case IS_STRING:
@@ -597,7 +610,7 @@ static int pdo_mysql_stmt_fetch(pdo_stmt_t *stmt, enum pdo_fetch_orientation ori
}
#else
int ret;
-
+
if (S->stmt) {
ret = mysql_stmt_fetch(S->stmt);
@@ -617,7 +630,7 @@ static int pdo_mysql_stmt_fetch(pdo_stmt_t *stmt, enum pdo_fetch_orientation ori
PDO_DBG_RETURN(1);
}
#endif /* PDO_USE_MYSQLND */
-
+
if (!S->result) {
strcpy(stmt->error_code, "HY000");
PDO_DBG_RETURN(0);
@@ -637,7 +650,7 @@ static int pdo_mysql_stmt_fetch(pdo_stmt_t *stmt, enum pdo_fetch_orientation ori
pdo_mysql_error_stmt(stmt);
}
PDO_DBG_RETURN(0);
- }
+ }
S->current_lengths = mysql_fetch_lengths(S->result);
PDO_DBG_RETURN(1);
@@ -661,8 +674,8 @@ static int pdo_mysql_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC) /* {{{
PDO_DBG_RETURN(0);
}
- /* fetch all on demand, this seems easiest
- ** if we've been here before bail out
+ /* fetch all on demand, this seems easiest
+ ** if we've been here before bail out
*/
if (cols[0].name) {
PDO_DBG_RETURN(1);
@@ -678,10 +691,10 @@ static int pdo_mysql_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC) /* {{{
cols[i].namelen = namelen;
cols[i].name = estrndup(S->fields[i].name, namelen);
}
-
+
cols[i].precision = S->fields[i].decimals;
cols[i].maxlen = S->fields[i].length;
-
+
#ifdef PDO_USE_MYSQLND
if (S->stmt) {
cols[i].param_type = PDO_PARAM_ZVAL;
@@ -799,7 +812,7 @@ static int pdo_mysql_stmt_col_meta(pdo_stmt_t *stmt, long colno, zval *return_va
const MYSQL_FIELD *F;
zval *flags;
char *str;
-
+
PDO_DBG_ENTER("pdo_mysql_stmt_col_meta");
PDO_DBG_INF_FMT("stmt=%p", S->stmt);
if (!S->result) {
@@ -857,7 +870,7 @@ static int pdo_mysql_stmt_col_meta(pdo_stmt_t *stmt, long colno, zval *return_va
break;
}
#endif
-
+
add_assoc_zval(return_value, "flags", flags);
add_assoc_string(return_value, "table", (char *) (F->table?F->table:""), 1);
PDO_DBG_RETURN(SUCCESS);
diff --git a/ext/pdo_mysql/tests/bug_41997.phpt b/ext/pdo_mysql/tests/bug_41997.phpt
index ee0cfe9ac2..38d55a0190 100644
--- a/ext/pdo_mysql/tests/bug_41997.phpt
+++ b/ext/pdo_mysql/tests/bug_41997.phpt
@@ -2,12 +2,11 @@
PDO MySQL Bug #41997 (stored procedure call returning single rowset blocks future queries)
--SKIPIF--
<?php
-if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) die('skip not loaded');
-require dirname(__FILE__) . '/config.inc';
-require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
-PDOTest::skip();
+require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
+require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+MySQLPDOTest::skip();
-$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+$db = MySQLPDOTest::factory();
$row = $db->query('SELECT VERSION() as _version')->fetch(PDO::FETCH_ASSOC);
$matches = array();
if (!preg_match('/^(\d+)\.(\d+)\.(\d+)/ismU', $row['_version'], $matches))
@@ -20,9 +19,8 @@ if ($version < 50000)
?>
--FILE--
<?php
-require dirname(__FILE__) . '/config.inc';
-require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
-$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+require dirname(__FILE__) . '/mysql_pdo_test.inc';
+$db = MySQLPDOTest::factory();
$db->exec('DROP PROCEDURE IF EXISTS p');
$db->exec('CREATE PROCEDURE p() BEGIN SELECT 1 AS "one"; END');
diff --git a/ext/pdo_mysql/tests/bug_61207.phpt b/ext/pdo_mysql/tests/bug_61207.phpt
index 917b322180..411b39a70b 100644
--- a/ext/pdo_mysql/tests/bug_61207.phpt
+++ b/ext/pdo_mysql/tests/bug_61207.phpt
@@ -2,27 +2,27 @@
PDO MySQL Bug #61207 (PDO::nextRowset() after a multi-statement query doesn't always work)
--SKIPIF--
<?php
-if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) die('skip not loaded');
-require dirname(__FILE__) . '/config.inc';
-require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
-PDOTest::skip();
+require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
+require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+MySQLPDOTest::skip();
+
?>
--FILE--
<?php
-require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+$db = MySQLPDOTest::factory();
-$link = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+$db->query('DROP TABLE IF EXISTS test');
+$db->query('create table `test`( `id` int )');
-$link->query('create table `bug61207`( `id` int )');
+$handle1 = $db->prepare('insert into test(id) values(1);
+ select * from test where id = ?;
+ update test set id = 2 where id = ?;');
-$handle1 = $link->prepare('insert into bug61207(id) values(1);
- select * from bug61207 where id = ?;
- update bug61207 set id = 2 where id = ?;');
-
$handle1->bindValue('1', '1');
$handle1->bindValue('2', '1');
-
-$handle1->execute();
+
+$handle1->execute();
$i = 1;
print("Handle 1:\n");
do {
@@ -31,9 +31,9 @@ do {
print("Results detected\n");
} while($handle1->nextRowset());
-$handle2 = $link->prepare('select * from bug61207 where id = ?;
- update bug61207 set id = 1 where id = ?;');
-
+$handle2 = $db->prepare('select * from test where id = ?;
+ update test set id = 1 where id = ?;');
+
$handle2->bindValue('1', '2');
$handle2->bindValue('2', '2');
@@ -47,9 +47,9 @@ do {
print("Results detected\n");
} while($handle2->nextRowset());
-$handle3 = $link->prepare('update bug61207 set id = 2 where id = ?;
- select * from bug61207 where id = ?;');
-
+$handle3 = $db->prepare('update test set id = 2 where id = ?;
+ select * from test where id = ?;');
+
$handle3->bindValue('1', '1');
$handle3->bindValue('2', '2');
@@ -63,15 +63,15 @@ do {
print("Results detected\n");
} while($handle3->nextRowset());
-$handle4 = $link->prepare('insert into bug61207(id) values(3);
- update bug61207 set id = 2 where id = ?;
- select * from bug61207 where id = ?;');
-
+$handle4 = $db->prepare('insert into test(id) values(3);
+ update test set id = 2 where id = ?;
+ select * from test where id = ?;');
+
$handle4->bindValue('1', '3');
$handle4->bindValue('2', '2');
-
+
$handle4->execute();
-
+
$i = 1;
print("Handle 4:\n");
do {
@@ -80,7 +80,12 @@ do {
print("Results detected\n");
} while($handle1->nextRowset());
-$link->query("DROP TABLE bug61207");
+$db->query("DROP TABLE test");
+?>
+--CLEAN--
+<?php
+require dirname(__FILE__) . '/mysql_pdo_test.inc';
+MySQLPDOTest::dropTestTable();
?>
--EXPECT--
Handle 1:
diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c
index c35ee33c7f..1dc0d58e97 100644
--- a/ext/pdo_pgsql/pgsql_statement.c
+++ b/ext/pdo_pgsql/pgsql_statement.c
@@ -362,8 +362,20 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
}
break;
}
+ } else {
+#endif
+ if (param->is_param) {
+ /* We need to manually convert to a pg native boolean value */
+ if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_BOOL &&
+ ((param->param_type & PDO_PARAM_INPUT_OUTPUT) != PDO_PARAM_INPUT_OUTPUT)) {
+ SEPARATE_ZVAL(&param->parameter);
+ param->param_type = PDO_PARAM_STR;
+ ZVAL_STRINGL(param->parameter, Z_BVAL_P(param->parameter) ? "t" : "f", 1, 1);
+ }
+ }
+#if HAVE_PQPREPARE
}
-#endif
+#endif
return 1;
}
diff --git a/ext/pdo_pgsql/tests/bug62593.phpt b/ext/pdo_pgsql/tests/bug62593.phpt
new file mode 100644
index 0000000000..e3ebf46ed5
--- /dev/null
+++ b/ext/pdo_pgsql/tests/bug62593.phpt
@@ -0,0 +1,51 @@
+--TEST--
+PDO PgSQL Bug #62593 (Emulate prepares behave strangely with PARAM_BOOL)
+--SKIPIF--
+<?php
+if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded');
+require dirname(__FILE__) . '/config.inc';
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+PDOTest::skip();
+?>
+--FILE--
+<?php
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
+$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
+$errors = array();
+
+$value = true;
+$query = $db->prepare('SELECT :foo IS FALSE as val_is_false');
+$query->bindValue(':foo', $value, PDO::PARAM_BOOL);
+$query->execute();
+$errors[] = $query->errorInfo();
+var_dump($value);
+
+$query->bindValue(':foo', 0, PDO::PARAM_BOOL);
+$query->execute();
+$errors[] = $query->errorInfo();
+
+// Verify bindParam maintains reference and only passes when execute is called
+$value = true;
+$query->bindParam(':foo', $value, PDO::PARAM_BOOL);
+$value = false;
+$query->execute();
+$errors[] = $query->errorInfo();
+var_dump($value);
+
+$expect = 'No errors found';
+
+foreach ($errors as $error)
+{
+ if (strpos('Invalid text representation', $error[2]) !== false)
+ {
+ $expect = 'Invalid boolean found';
+ }
+}
+echo $expect;
+?>
+--EXPECTF--
+bool(true)
+bool(false)
+No errors found
diff --git a/ext/phar/util.c b/ext/phar/util.c
index 5fcb2b6573..f674bca4fb 100644
--- a/ext/phar/util.c
+++ b/ext/phar/util.c
@@ -2118,8 +2118,7 @@ int phar_create_signature(phar_archive_data *phar, php_stream *fp, char **signat
#ifdef PHAR_HAVE_OPENSSL
BIO *in;
EVP_PKEY *key;
- EVP_MD *mdtype = (EVP_MD *) EVP_sha1();
- EVP_MD_CTX md_ctx;
+ EVP_MD_CTX *md_ctx;
in = BIO_new_mem_buf(PHAR_G(openssl_privatekey), PHAR_G(openssl_privatekey_len));
@@ -2140,15 +2139,30 @@ int phar_create_signature(phar_archive_data *phar, php_stream *fp, char **signat
return FAILURE;
}
+ md_ctx = EVP_MD_CTX_create();
+
siglen = EVP_PKEY_size(key);
sigbuf = emalloc(siglen + 1);
- EVP_SignInit(&md_ctx, mdtype);
+
+ if (!EVP_SignInit(md_ctx, EVP_sha1())) {
+ efree(sigbuf);
+ if (error) {
+ spprintf(error, 0, "unable to initialize openssl signature for phar \"%s\"", phar->fname);
+ }
+ return FAILURE;
+ }
while ((sig_len = php_stream_read(fp, (char*)buf, sizeof(buf))) > 0) {
- EVP_SignUpdate(&md_ctx, buf, sig_len);
+ if (!EVP_SignUpdate(md_ctx, buf, sig_len)) {
+ efree(sigbuf);
+ if (error) {
+ spprintf(error, 0, "unable to update the openssl signature for phar \"%s\"", phar->fname);
+ }
+ return FAILURE;
+ }
}
- if (!EVP_SignFinal (&md_ctx, sigbuf,(unsigned int *)&siglen, key)) {
+ if (!EVP_SignFinal (md_ctx, sigbuf,(unsigned int *)&siglen, key)) {
efree(sigbuf);
if (error) {
spprintf(error, 0, "unable to write phar \"%s\" with requested openssl signature", phar->fname);
@@ -2157,7 +2171,7 @@ int phar_create_signature(phar_archive_data *phar, php_stream *fp, char **signat
}
sigbuf[siglen] = '\0';
- EVP_MD_CTX_cleanup(&md_ctx);
+ EVP_MD_CTX_destroy(md_ctx);
#else
sigbuf = NULL;
siglen = 0;
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index deabcbe7a4..7c51cf6cca 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -4473,7 +4473,7 @@ ZEND_METHOD(reflection_class, getTraitAliases)
zend_trait_method_reference *cur_ref = ce->trait_aliases[i]->trait_method;
if (ce->trait_aliases[i]->alias) {
- method_name_len = spprintf(&method_name, 0, "%s::%s", cur_ref->class_name, cur_ref->method_name);
+ method_name_len = spprintf(&method_name, 0, "%s::%s", cur_ref->ce->name, cur_ref->method_name);
add_assoc_stringl_ex(return_value, ce->trait_aliases[i]->alias, ce->trait_aliases[i]->alias_len + 1, method_name, method_name_len, 0);
}
i++;
diff --git a/ext/reflection/tests/bug63399.phpt b/ext/reflection/tests/bug63399.phpt
new file mode 100644
index 0000000000..393b861690
--- /dev/null
+++ b/ext/reflection/tests/bug63399.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Bug #63399 (ReflectionClass::getTraitAliases() incorrectly resolves traitnames)
+--FILE--
+<?php
+trait Trait1 {
+ public function run() {}
+ public function say() {}
+}
+
+trait Trait2 {
+ public function run() {}
+ public function say() {}
+}
+
+class MyClass
+{
+ use Trait1, Trait2 {
+ Trait1::run as execute;
+ Trait1::say insteadof Trait2;
+ Trait2::run insteadof Trait1;
+ Trait2::say as talk;
+ }
+}
+
+$ref = new ReflectionClass('MyClass');
+
+print_r($ref->getTraitAliases());
+print_r($ref->getTraits());
+
+?>
+--EXPECT--
+Array
+(
+ [execute] => Trait1::run
+ [talk] => Trait2::say
+)
+Array
+(
+ [Trait1] => ReflectionClass Object
+ (
+ [name] => Trait1
+ )
+
+ [Trait2] => ReflectionClass Object
+ (
+ [name] => Trait2
+ )
+
+)
diff --git a/ext/reflection/tests/traits005.phpt b/ext/reflection/tests/traits005.phpt
index 1496a35ec9..4cfa6c04f0 100644
--- a/ext/reflection/tests/traits005.phpt
+++ b/ext/reflection/tests/traits005.phpt
@@ -28,14 +28,14 @@ array(0) {
class C3:
array(1) {
["a1"]=>
- string(10) "(null)::m1"
+ string(6) "T1::m1"
}
class C4:
array(2) {
["a1"]=>
- string(10) "(null)::m1"
+ string(6) "T1::m1"
["a2"]=>
- string(10) "(null)::m2"
+ string(6) "T1::m2"
}
diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c
index 0d1714257d..4adb09f188 100644
--- a/ext/sockets/sockets.c
+++ b/ext/sockets/sockets.c
@@ -57,7 +57,7 @@
# define h_errno WSAGetLastError()
# define set_errno(a) WSASetLastError(a)
# define close(a) closesocket(a)
-# if _WIN32_WINNT >= 0x0600 && SOCKETS_ENABLE_VISTA_API
+# if _WIN32_WINNT >= 0x0600
# define HAVE_IF_NAMETOINDEX 1
# endif
#else
diff --git a/ext/spl/doxygen.cfg b/ext/spl/doxygen.cfg
index 4b71787238..5c7025a9ad 100755
--- a/ext/spl/doxygen.cfg
+++ b/ext/spl/doxygen.cfg
@@ -111,7 +111,7 @@ HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = YES
CHM_FILE = ../spl.chm
-HHC_LOCATION = hhc.exe
+#HHC_LOCATION = hhc.exe
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
@@ -210,7 +210,7 @@ MAX_DOT_GRAPH_WIDTH = 1200
MAX_DOT_GRAPH_HEIGHT = 1024
MAX_DOT_GRAPH_DEPTH = 0
GENERATE_LEGEND = YES
-DOT_CLEANUP = YES
+DOT_CLEANUP = NO
#---------------------------------------------------------------------------
# Configuration::additions related to the search engine
#---------------------------------------------------------------------------
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index a30579e143..d6377df84d 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -3732,6 +3732,11 @@ PHP_MSHUTDOWN_FUNCTION(basic) /* {{{ */
PHP_RINIT_FUNCTION(basic) /* {{{ */
{
memset(BG(strtok_table), 0, 256);
+
+ BG(serialize_lock) = 0;
+ memset(&BG(serialize), 0, sizeof(BG(serialize)));
+ memset(&BG(unserialize), 0, sizeof(BG(unserialize)));
+
BG(strtok_string) = NULL;
BG(strtok_zval) = NULL;
BG(strtok_last) = NULL;
diff --git a/sapi/fpm/php-fpm.service.in b/sapi/fpm/php-fpm.service.in
new file mode 100644
index 0000000000..396a88d66f
--- /dev/null
+++ b/sapi/fpm/php-fpm.service.in
@@ -0,0 +1,12 @@
+[Unit]
+Description=The PHP FastCGI Process Manager
+After=syslog.target network.target
+
+[Service]
+PIDFile=@localstatedir@/run/php-fpm.pid
+ExecStart=@sbindir@/php-fpm --nodaemonize --fpm-config @sysconfdir@/php-fpm.conf
+ExecReload=/bin/kill -USR2 $MAINPID
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/server-tests.php b/server-tests.php
index 051a1cfa08..ca39b198b8 100755
--- a/server-tests.php
+++ b/server-tests.php
@@ -138,7 +138,7 @@ function generate_diff($wanted,$output)
}
function mkpath($path,$mode = 0777) {
- $dirs = split('[\\/]',$path);
+ $dirs = preg_split('/[\\/]/',$path);
$path = $dirs[0];
for($i = 1;$i < count($dirs);$i++) {
$path .= '/'.$dirs[$i];
@@ -358,7 +358,7 @@ class HTTPRequest
return $this->outgoing_payload;
}
- function &_sendHTTP()
+ function _sendHTTP()
{
$this->_getRequest();
$host = $this->urlparts['host'];
@@ -555,7 +555,7 @@ class testHarness {
{
// get the list of installed extensions
$out = $this->runscript(PHP_EXTENSIONS_SCRIPT,true);
- $this->exts_to_test = split(":",$out);
+ $this->exts_to_test = explode(":",$out);
sort($this->exts_to_test);
$this->exts_tested = count($this->exts_to_test);
}
@@ -716,9 +716,9 @@ class testHarness {
if (@$this->conf['TEST_PATHS']) {
$this->test_dirs = array();
if ($this->iswin32) {
- $paths = split(';',$this->conf['TEST_PATHS']);
+ $paths = explode(';',$this->conf['TEST_PATHS']);
} else {
- $paths = split(':|;',$this->conf['TEST_PATHS']);
+ $paths = explode(':|;',$this->conf['TEST_PATHS']);
}
foreach($paths as $path) {
$this->test_dirs[] = realpath($path);
@@ -1152,7 +1152,7 @@ class testHarness {
while (!feof($fp)) {
$line = fgets($fp);
// Match the beginning of a section.
- if (ereg('^--([A-Z]+)--',$line,$r)) {
+ if (preg_match('/^--([A-Z]+)--/',$line,$r)) {
$section = $r[1];
$section_text[$section] = '';
continue;
@@ -1211,14 +1211,14 @@ class testHarness {
if (!$output) return NULL;
if ($this->conf['TEST_PHP_DETAILED'] > 2)
print "SKIPIF: [$output]\n";
- if (eregi("^skip", $output)){
+ if (preg_match("/^skip/i", $output)){
- $reason = (ereg("^skip[[:space:]]*(.+)\$", $output)) ? ereg_replace("^skip[[:space:]]*(.+)\$", "\\1", $output) : FALSE;
+ $reason = (preg_match("/^skip\s*(.+)\$/", $output)) ? preg_replace("/^skip\s*(.+)\$/", "\\1", $output) : FALSE;
$this->showstatus($section_text['TEST'], 'SKIPPED', $reason);
return 'SKIPPED';
}
- if (eregi("^info", $output)) {
- $reason = (ereg("^info[[:space:]]*(.+)\$", $output)) ? ereg_replace("^info[[:space:]]*(.+)\$", "\\1", $output) : FALSE;
+ if (preg_match("/^info/i", $output)) {
+ $reason = (preg_match("/^info\s*(.+)\$/", $output)) ? preg_replace("/^info\s*(.+)\$/", "\\1", $output) : FALSE;
if ($reason) {
$tested .= " (info: $reason)";
}
@@ -1244,19 +1244,19 @@ class testHarness {
$tested = $section_text['TEST']." [$shortname]";
if ($this->conf['TEST_WEB']) {
- $tmp_file = ereg_replace('\.phpt$','.'.$this->conf['TEST_WEB_EXT'],$file);
+ $tmp_file = preg_replace('/\.phpt$/','.'.$this->conf['TEST_WEB_EXT'],$file);
$uri = $this->conf['TEST_BASE_SCRIPT_NAME'].str_replace($this->conf['TEST_BASE_PATH'], '', $tmp_file);
$uri = str_replace('\\', '/', $uri);
} else {
- $tmp_file = ereg_replace('\.phpt$','.php',$file);
+ $tmp_file = preg_replace('/\.phpt$/','.php',$file);
}
@unlink($tmp_file);
// unlink old test results
- @unlink(ereg_replace('\.phpt$','.diff',$file));
- @unlink(ereg_replace('\.phpt$','.log',$file));
- @unlink(ereg_replace('\.phpt$','.exp',$file));
- @unlink(ereg_replace('\.phpt$','.out',$file));
+ @unlink(preg_replace('/\.phpt$/','.diff',$file));
+ @unlink(preg_replace('/\.phpt$/','.log',$file));
+ @unlink(preg_replace('/\.phpt$/','.exp',$file));
+ @unlink(preg_replace('/\.phpt$/','.out',$file));
if (!$this->conf['TEST_WEB']) {
// Reset environment from any previous test.
@@ -1425,15 +1425,68 @@ class testHarness {
}
$wanted_re = preg_replace('/\r\n/',"\n",$wanted);
if (isset($section_text['EXPECTF'])) {
- $wanted_re = preg_quote($wanted_re, '/');
+ // do preg_quote, but miss out any %r delimited sections
+ $temp = "";
+ $r = "%r";
+ $startOffset = 0;
+ $length = strlen($wanted_re);
+ while($startOffset < $length) {
+ $start = strpos($wanted_re, $r, $startOffset);
+ if ($start !== false) {
+ // we have found a start tag
+ $end = strpos($wanted_re, $r, $start+2);
+ if ($end === false) {
+ // unbalanced tag, ignore it.
+ $end = $start = $length;
+ }
+ } else {
+ // no more %r sections
+ $start = $end = $length;
+ }
+ // quote a non re portion of the string
+ $temp = $temp . preg_quote(substr($wanted_re, $startOffset, ($start - $startOffset)), '/');
+ // add the re unquoted.
+ if ($end > $start) {
+ $temp = $temp . '(' . substr($wanted_re, $start+2, ($end - $start-2)). ')';
+ }
+ $startOffset = $end + 2;
+ }
+ $wanted_re = $temp;
+
+ $wanted_re = str_replace(
+ array('%binary_string_optional%'),
+ 'string',
+ $wanted_re
+ );
+ $wanted_re = str_replace(
+ array('%unicode_string_optional%'),
+ 'string',
+ $wanted_re
+ );
+ $wanted_re = str_replace(
+ array('%unicode\|string%', '%string\|unicode%'),
+ 'string',
+ $wanted_re
+ );
+ $wanted_re = str_replace(
+ array('%u\|b%', '%b\|u%'),
+ '',
+ $wanted_re
+ );
// Stick to basics
- $wanted_re = str_replace("%s", ".+?", $wanted_re); //not greedy
- $wanted_re = str_replace("%i", "[+\-]?[0-9]+", $wanted_re);
- $wanted_re = str_replace("%d", "[0-9]+", $wanted_re);
- $wanted_re = str_replace("%x", "[0-9a-fA-F]+", $wanted_re);
- $wanted_re = str_replace("%f", "[+\-]?\.?[0-9]+\.?[0-9]*(E-?[0-9]+)?", $wanted_re);
- $wanted_re = str_replace("%c", ".", $wanted_re);
+ $wanted_re = str_replace('%e', '\\' . DIRECTORY_SEPARATOR, $wanted_re);
+ $wanted_re = str_replace('%s', '[^\r\n]+', $wanted_re);
+ $wanted_re = str_replace('%S', '[^\r\n]*', $wanted_re);
+ $wanted_re = str_replace('%a', '.+', $wanted_re);
+ $wanted_re = str_replace('%A', '.*', $wanted_re);
+ $wanted_re = str_replace('%w', '\s*', $wanted_re);
+ $wanted_re = str_replace('%i', '[+-]?\d+', $wanted_re);
+ $wanted_re = str_replace('%d', '\d+', $wanted_re);
+ $wanted_re = str_replace('%x', '[0-9a-fA-F]+', $wanted_re);
+ $wanted_re = str_replace('%f', '[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?', $wanted_re);
+ $wanted_re = str_replace('%c', '.', $wanted_re);
// %f allows two points "-.0.0" but that is the best *simple* expression
+
}
/* DEBUG YOUR REGEX HERE
var_dump($wanted_re);
@@ -1489,8 +1542,8 @@ class testHarness {
$this->failed_tests[] = array(
'name' => $file,
'test_name' => $tested,
- 'output' => ereg_replace('\.phpt$','.log', $file),
- 'diff' => ereg_replace('\.phpt$','.diff', $file)
+ 'output' => preg_replace('/\.phpt$/','.log', $file),
+ 'diff' => preg_replace('/\.phpt$/','.diff', $file)
);
if ($this->conf['TEST_PHP_DETAILED'])
@@ -1498,25 +1551,25 @@ class testHarness {
// write .exp
if (strpos($this->conf['TEST_PHP_LOG_FORMAT'],'E') !== FALSE) {
- $logname = ereg_replace('\.phpt$','.exp',$file);
+ $logname = preg_replace('/\.phpt$/','.exp',$file);
file_put_contents($logname,$wanted);
}
// write .out
if (strpos($this->conf['TEST_PHP_LOG_FORMAT'],'O') !== FALSE) {
- $logname = ereg_replace('\.phpt$','.out',$file);
+ $logname = preg_replace('/\.phpt$/','.out',$file);
file_put_contents($logname,$output);
}
// write .diff
if (strpos($this->conf['TEST_PHP_LOG_FORMAT'],'D') !== FALSE) {
- $logname = ereg_replace('\.phpt$','.diff',$file);
+ $logname = preg_replace('/\.phpt$/','.diff',$file);
file_put_contents($logname,generate_diff($wanted,$output));
}
// write .log
if (strpos($this->conf['TEST_PHP_LOG_FORMAT'],'L') !== FALSE) {
- $logname = ereg_replace('\.phpt$','.log',$file);
+ $logname = preg_replace('/\.phpt$/','.log',$file);
file_put_contents($logname,
"\n---- EXPECTED OUTPUT\n$wanted\n".
"---- ACTUAL OUTPUT\n$output\n".