diff options
author | Andrey Hristov <andrey@php.net> | 2012-10-31 15:55:04 +0100 |
---|---|---|
committer | Andrey Hristov <andrey@php.net> | 2012-10-31 15:55:04 +0100 |
commit | f2f380407ac4138a483b43f9649695db36e42c8c (patch) | |
tree | e7048592c57ca7c0822c2cbe47cbf9f9e86679ea | |
parent | d62bc53a4fb2058a06f356b5779a0db88f6e207c (diff) | |
parent | 8fb26e76ba463cfd38433bb2f19be84ff79b11b8 (diff) | |
download | php-git-f2f380407ac4138a483b43f9649695db36e42c8c.tar.gz |
Merge branch 'master' of ssh://git.php.net/php-src
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(¶m->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". |