diff options
author | Ondřej Surý <ondrej@sury.org> | 2013-11-21 09:50:14 +0100 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2013-11-21 09:50:14 +0100 |
commit | 0d7d3241164b4769b93867da2e8adb724ae17950 (patch) | |
tree | 18848ffcc5f7d70c56cd890352f518b60af11ea1 | |
parent | 3f2474550cbf299d8a7df34988ece052a0401414 (diff) | |
download | php-upstream/5.5.6+dfsg.tar.gz |
New upstream version 5.5.6+dfsgupstream/5.5.6+dfsg
178 files changed, 1778 insertions, 1812 deletions
@@ -1,5 +1,44 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| +14 Nov 2013, PHP 5.5.6 + +- Core: + . Fixed bug #65947 (basename is no more working after fgetcsv in certain + situation). (Laruence) + . Improved performance of array_merge() and func_get_args() by eliminating + useless copying. (Dmitry) + . Fixed bug #65939 (Space before ";" breaks php.ini parsing). + (brainstorm at nopcode dot org) + . Fixed bug #65911 (scope resolution operator - strange behavior with $this). + (Bob Weinand) + . Fixed bug #65936 (dangling context pointer causes crash). (Tony) + +- FPM: + . Changed default listen() backlog to 65535. (Tony) + +- MySQLi: + . Fixed bug #66043 (Segfault calling bind_param() on mysqli). (Laruence) + +- OPcache + . Increased limit for opcache.max_accelerated_files to 1,000,000. (Chris) + . Fixed issue #115 (path issue when using phar). (Dmitry) + . Fixed issue #149 (Phar mount points not working with OPcache enabled). + (Dmitry) + +- ODBC + . Fixed bug #65950 (Field name truncation if the field name is bigger than + 32 characters). (patch submitted by: michael dot y at zend dot com, Yasuo) + +- PDO: + . Fixed bug #66033 (Segmentation Fault when constructor of PDO statement + throws an exception). (Laruence) + . Fixed bug 65946 (sql_parser permanently converts values bound to strings) + +- Standard: + . Fixed bug #64760 (var_export() does not use full precision for floating-point + numbers) (Yasuo) + + 17 Oct 2013, PHP 5.5.5 - Core: @@ -17,7 +17,7 @@ See https://wiki.php.net/rfc and https://wiki.php.net/rfc/voting for more information on the process. Bug fixes **do not** require an RFC, but require a bugtracker ticket. Always -open a ticket at http://bugs.php.net and reference the bug id using #NNNNNN. +open a ticket at https://bugs.php.net and reference the bug id using #NNNNNN. Fix #55371: get_magic_quotes_gpc() throws deprecation warning @@ -28,3 +28,12 @@ open a ticket at http://bugs.php.net and reference the bug id using #NNNNNN. We do not merge pull requests directly on github. All PRs will be pulled and pushed through http://git.php.net. + + +Guidelines for contributors +=========================== +- [CODING_STANDARDS](/CODING_STANDARDS) +- [README.GIT-RULES](/README.GIT-RULES) +- [README.MAILINGLIST_RULES](/README.MAILINGLIST_RULES) +- [README.RELEASE_PROCESS](/README.RELEASE_PROCESS) + @@ -343,6 +343,8 @@ None - Intl: - This extension now requires ICU 4.0+. +- Phar: + - Added ability of resolving alias created by Phar::map ======================================== 9. New Global Constants diff --git a/Zend/acinclude.m4 b/Zend/acinclude.m4 index 454513f68..5a521dc98 100644 --- a/Zend/acinclude.m4 +++ b/Zend/acinclude.m4 @@ -12,7 +12,7 @@ AC_DEFUN([LIBZEND_BISON_CHECK],[ bison_version=none if test "$YACC"; then AC_CACHE_CHECK([for bison version], php_cv_bison_version, [ - bison_version_vars=`bison --version 2> /dev/null | grep 'GNU Bison' | cut -d ' ' -f 4 | $SED -e 's/\./ /' | tr -d a-z` + bison_version_vars=`$YACC --version 2> /dev/null | grep 'GNU Bison' | cut -d ' ' -f 4 | $SED -e 's/\./ /g' | tr -d a-z` php_cv_bison_version=invalid if test -n "$bison_version_vars"; then set $bison_version_vars diff --git a/Zend/tests/bug65911.phpt b/Zend/tests/bug65911.phpt new file mode 100644 index 000000000..b9f37b7bd --- /dev/null +++ b/Zend/tests/bug65911.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #65911 (scope resolution operator - strange behavior with $this) +--FILE-- +<?php +class A {} + +class B +{ + public function go() + { + $this->foo = 'bar'; + echo A::$this->foo; // should not output 'bar' + } +} + +$obj = new B(); +$obj->go(); +?> +--EXPECTF-- +Fatal error: Access to undeclared static property: A::$this in %s on line %d diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 1ad64e74e..6cbe0bc68 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -461,12 +461,17 @@ ZEND_FUNCTION(func_get_args) array_init_size(return_value, arg_count); for (i=0; i<arg_count; i++) { - zval *element; + zval *element, *arg; - ALLOC_ZVAL(element); - *element = **((zval **) (p-(arg_count-i))); - zval_copy_ctor(element); - INIT_PZVAL(element); + arg = *((zval **) (p-(arg_count-i))); + if (!Z_ISREF_P(arg)) { + element = arg; + Z_ADDREF_P(element); + } else { + ALLOC_ZVAL(element); + INIT_PZVAL_COPY(element, arg); + zval_copy_ctor(element); + } zend_hash_next_index_insert(return_value->value.ht, &element, sizeof(zval *), NULL); } } diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 9008f2336..60b9e3e65 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -908,6 +908,7 @@ static zend_bool opline_is_fetch_this(const zend_op *opline TSRMLS_DC) /* {{{ */ { if ((opline->opcode == ZEND_FETCH_W) && (opline->op1_type == IS_CONST) && (Z_TYPE(CONSTANT(opline->op1.constant)) == IS_STRING) + && ((opline->extended_value & ZEND_FETCH_STATIC_MEMBER) != ZEND_FETCH_STATIC_MEMBER) && (Z_HASH_P(&CONSTANT(opline->op1.constant)) == THIS_HASHVAL) && (Z_STRLEN(CONSTANT(opline->op1.constant)) == (sizeof("this")-1)) && !memcmp(Z_STRVAL(CONSTANT(opline->op1.constant)), "this", sizeof("this"))) { diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 201ae49e0..c2c3ae521 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -4453,22 +4453,22 @@ ZEND_VM_HELPER_EX(zend_isset_isempty_dim_prop_obj_handler, VAR|UNUSED|CV, CONST| { USE_OPLINE zend_free_op free_op1, free_op2; - zval **container; + zval *container; zval **value = NULL; int result = 0; ulong hval; zval *offset; SAVE_OPLINE(); - container = GET_OP1_OBJ_ZVAL_PTR_PTR(BP_VAR_IS); + container = GET_OP1_OBJ_ZVAL_PTR(BP_VAR_IS); offset = GET_OP2_ZVAL_PTR(BP_VAR_R); - if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) { + if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) { HashTable *ht; int isset = 0; - ht = Z_ARRVAL_PP(container); + ht = Z_ARRVAL_P(container); switch (Z_TYPE_P(offset)) { case IS_DOUBLE: @@ -4487,9 +4487,7 @@ ZEND_VM_C_LABEL(num_index_prop): if (OP2_TYPE == IS_CONST) { hval = Z_HASH_P(offset); } else { - if (!prop_dim) { - ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, ZEND_VM_C_GOTO(num_index_prop)); - } + ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, ZEND_VM_C_GOTO(num_index_prop)); if (IS_INTERNED(Z_STRVAL_P(offset))) { hval = INTERNED_HASH(Z_STRVAL_P(offset)); } else { @@ -4524,20 +4522,20 @@ ZEND_VM_C_LABEL(num_index_prop): } } FREE_OP2(); - } else if (Z_TYPE_PP(container) == IS_OBJECT) { + } else if (Z_TYPE_P(container) == IS_OBJECT) { if (IS_OP2_TMP_FREE()) { MAKE_REAL_ZVAL_PTR(offset); } if (prop_dim) { - if (Z_OBJ_HT_P(*container)->has_property) { - result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((OP2_TYPE == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_property) { + result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((OP2_TYPE == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check property of non-object"); result = 0; } } else { - if (Z_OBJ_HT_P(*container)->has_dimension) { - result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_dimension) { + result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check element of non-array"); result = 0; @@ -4548,7 +4546,7 @@ ZEND_VM_C_LABEL(num_index_prop): } else { FREE_OP2(); } - } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */ + } else if (Z_TYPE_P(container) == IS_STRING && !prop_dim) { /* string offsets */ zval tmp; if (Z_TYPE_P(offset) != IS_LONG) { @@ -4566,11 +4564,11 @@ ZEND_VM_C_LABEL(num_index_prop): } if (Z_TYPE_P(offset) == IS_LONG) { if (opline->extended_value & ZEND_ISSET) { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) { result = 1; } } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container) && Z_STRVAL_P(container)[offset->value.lval] != '0') { result = 1; } } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 74a8c12d4..b21f6bf89 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -16074,22 +16074,22 @@ static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_CONST( { USE_OPLINE zend_free_op free_op1; - zval **container; + zval *container; zval **value = NULL; int result = 0; ulong hval; zval *offset; SAVE_OPLINE(); - container = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); + container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); offset = opline->op2.zv; - if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) { + if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) { HashTable *ht; int isset = 0; - ht = Z_ARRVAL_PP(container); + ht = Z_ARRVAL_P(container); switch (Z_TYPE_P(offset)) { case IS_DOUBLE: @@ -16108,9 +16108,7 @@ num_index_prop: if (IS_CONST == IS_CONST) { hval = Z_HASH_P(offset); } else { - if (!prop_dim) { - ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); - } + ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); if (IS_INTERNED(Z_STRVAL_P(offset))) { hval = INTERNED_HASH(Z_STRVAL_P(offset)); } else { @@ -16145,20 +16143,20 @@ num_index_prop: } } - } else if (Z_TYPE_PP(container) == IS_OBJECT) { + } else if (Z_TYPE_P(container) == IS_OBJECT) { if (0) { MAKE_REAL_ZVAL_PTR(offset); } if (prop_dim) { - if (Z_OBJ_HT_P(*container)->has_property) { - result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_CONST == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_property) { + result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_CONST == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check property of non-object"); result = 0; } } else { - if (Z_OBJ_HT_P(*container)->has_dimension) { - result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_dimension) { + result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check element of non-array"); result = 0; @@ -16169,7 +16167,7 @@ num_index_prop: } else { } - } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */ + } else if (Z_TYPE_P(container) == IS_STRING && !prop_dim) { /* string offsets */ zval tmp; if (Z_TYPE_P(offset) != IS_LONG) { @@ -16187,11 +16185,11 @@ num_index_prop: } if (Z_TYPE_P(offset) == IS_LONG) { if (opline->extended_value & ZEND_ISSET) { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) { result = 1; } } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container) && Z_STRVAL_P(container)[offset->value.lval] != '0') { result = 1; } } @@ -18168,22 +18166,22 @@ static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_TMP(in { USE_OPLINE zend_free_op free_op1, free_op2; - zval **container; + zval *container; zval **value = NULL; int result = 0; ulong hval; zval *offset; SAVE_OPLINE(); - container = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); + container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC); - if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) { + if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) { HashTable *ht; int isset = 0; - ht = Z_ARRVAL_PP(container); + ht = Z_ARRVAL_P(container); switch (Z_TYPE_P(offset)) { case IS_DOUBLE: @@ -18202,9 +18200,7 @@ num_index_prop: if (IS_TMP_VAR == IS_CONST) { hval = Z_HASH_P(offset); } else { - if (!prop_dim) { - ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); - } + ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); if (IS_INTERNED(Z_STRVAL_P(offset))) { hval = INTERNED_HASH(Z_STRVAL_P(offset)); } else { @@ -18239,20 +18235,20 @@ num_index_prop: } } zval_dtor(free_op2.var); - } else if (Z_TYPE_PP(container) == IS_OBJECT) { + } else if (Z_TYPE_P(container) == IS_OBJECT) { if (1) { MAKE_REAL_ZVAL_PTR(offset); } if (prop_dim) { - if (Z_OBJ_HT_P(*container)->has_property) { - result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_TMP_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_property) { + result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_TMP_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check property of non-object"); result = 0; } } else { - if (Z_OBJ_HT_P(*container)->has_dimension) { - result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_dimension) { + result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check element of non-array"); result = 0; @@ -18263,7 +18259,7 @@ num_index_prop: } else { zval_dtor(free_op2.var); } - } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */ + } else if (Z_TYPE_P(container) == IS_STRING && !prop_dim) { /* string offsets */ zval tmp; if (Z_TYPE_P(offset) != IS_LONG) { @@ -18281,11 +18277,11 @@ num_index_prop: } if (Z_TYPE_P(offset) == IS_LONG) { if (opline->extended_value & ZEND_ISSET) { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) { result = 1; } } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container) && Z_STRVAL_P(container)[offset->value.lval] != '0') { result = 1; } } @@ -20644,22 +20640,22 @@ static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_VAR(in { USE_OPLINE zend_free_op free_op1, free_op2; - zval **container; + zval *container; zval **value = NULL; int result = 0; ulong hval; zval *offset; SAVE_OPLINE(); - container = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); + container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC); - if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) { + if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) { HashTable *ht; int isset = 0; - ht = Z_ARRVAL_PP(container); + ht = Z_ARRVAL_P(container); switch (Z_TYPE_P(offset)) { case IS_DOUBLE: @@ -20678,9 +20674,7 @@ num_index_prop: if (IS_VAR == IS_CONST) { hval = Z_HASH_P(offset); } else { - if (!prop_dim) { - ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); - } + ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); if (IS_INTERNED(Z_STRVAL_P(offset))) { hval = INTERNED_HASH(Z_STRVAL_P(offset)); } else { @@ -20715,20 +20709,20 @@ num_index_prop: } } if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; - } else if (Z_TYPE_PP(container) == IS_OBJECT) { + } else if (Z_TYPE_P(container) == IS_OBJECT) { if (0) { MAKE_REAL_ZVAL_PTR(offset); } if (prop_dim) { - if (Z_OBJ_HT_P(*container)->has_property) { - result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_property) { + result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check property of non-object"); result = 0; } } else { - if (Z_OBJ_HT_P(*container)->has_dimension) { - result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_dimension) { + result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check element of non-array"); result = 0; @@ -20739,7 +20733,7 @@ num_index_prop: } else { if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } - } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */ + } else if (Z_TYPE_P(container) == IS_STRING && !prop_dim) { /* string offsets */ zval tmp; if (Z_TYPE_P(offset) != IS_LONG) { @@ -20757,11 +20751,11 @@ num_index_prop: } if (Z_TYPE_P(offset) == IS_LONG) { if (opline->extended_value & ZEND_ISSET) { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) { result = 1; } } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container) && Z_STRVAL_P(container)[offset->value.lval] != '0') { result = 1; } } @@ -23936,22 +23930,22 @@ static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_CV(int { USE_OPLINE zend_free_op free_op1; - zval **container; + zval *container; zval **value = NULL; int result = 0; ulong hval; zval *offset; SAVE_OPLINE(); - container = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); + container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC); - if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) { + if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) { HashTable *ht; int isset = 0; - ht = Z_ARRVAL_PP(container); + ht = Z_ARRVAL_P(container); switch (Z_TYPE_P(offset)) { case IS_DOUBLE: @@ -23970,9 +23964,7 @@ num_index_prop: if (IS_CV == IS_CONST) { hval = Z_HASH_P(offset); } else { - if (!prop_dim) { - ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); - } + ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); if (IS_INTERNED(Z_STRVAL_P(offset))) { hval = INTERNED_HASH(Z_STRVAL_P(offset)); } else { @@ -24007,20 +23999,20 @@ num_index_prop: } } - } else if (Z_TYPE_PP(container) == IS_OBJECT) { + } else if (Z_TYPE_P(container) == IS_OBJECT) { if (0) { MAKE_REAL_ZVAL_PTR(offset); } if (prop_dim) { - if (Z_OBJ_HT_P(*container)->has_property) { - result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_CV == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_property) { + result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_CV == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check property of non-object"); result = 0; } } else { - if (Z_OBJ_HT_P(*container)->has_dimension) { - result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_dimension) { + result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check element of non-array"); result = 0; @@ -24031,7 +24023,7 @@ num_index_prop: } else { } - } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */ + } else if (Z_TYPE_P(container) == IS_STRING && !prop_dim) { /* string offsets */ zval tmp; if (Z_TYPE_P(offset) != IS_LONG) { @@ -24049,11 +24041,11 @@ num_index_prop: } if (Z_TYPE_P(offset) == IS_LONG) { if (opline->extended_value & ZEND_ISSET) { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) { result = 1; } } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container) && Z_STRVAL_P(container)[offset->value.lval] != '0') { result = 1; } } @@ -25440,22 +25432,22 @@ static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_CON { USE_OPLINE - zval **container; + zval *container; zval **value = NULL; int result = 0; ulong hval; zval *offset; SAVE_OPLINE(); - container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C); + container = _get_obj_zval_ptr_unused(TSRMLS_C); offset = opline->op2.zv; - if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) { + if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) { HashTable *ht; int isset = 0; - ht = Z_ARRVAL_PP(container); + ht = Z_ARRVAL_P(container); switch (Z_TYPE_P(offset)) { case IS_DOUBLE: @@ -25474,9 +25466,7 @@ num_index_prop: if (IS_CONST == IS_CONST) { hval = Z_HASH_P(offset); } else { - if (!prop_dim) { - ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); - } + ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); if (IS_INTERNED(Z_STRVAL_P(offset))) { hval = INTERNED_HASH(Z_STRVAL_P(offset)); } else { @@ -25511,20 +25501,20 @@ num_index_prop: } } - } else if (Z_TYPE_PP(container) == IS_OBJECT) { + } else if (Z_TYPE_P(container) == IS_OBJECT) { if (0) { MAKE_REAL_ZVAL_PTR(offset); } if (prop_dim) { - if (Z_OBJ_HT_P(*container)->has_property) { - result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_CONST == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_property) { + result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_CONST == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check property of non-object"); result = 0; } } else { - if (Z_OBJ_HT_P(*container)->has_dimension) { - result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_dimension) { + result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check element of non-array"); result = 0; @@ -25535,7 +25525,7 @@ num_index_prop: } else { } - } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */ + } else if (Z_TYPE_P(container) == IS_STRING && !prop_dim) { /* string offsets */ zval tmp; if (Z_TYPE_P(offset) != IS_LONG) { @@ -25553,11 +25543,11 @@ num_index_prop: } if (Z_TYPE_P(offset) == IS_LONG) { if (opline->extended_value & ZEND_ISSET) { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) { result = 1; } } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container) && Z_STRVAL_P(container)[offset->value.lval] != '0') { result = 1; } } @@ -26756,22 +26746,22 @@ static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_TMP { USE_OPLINE zend_free_op free_op2; - zval **container; + zval *container; zval **value = NULL; int result = 0; ulong hval; zval *offset; SAVE_OPLINE(); - container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C); + container = _get_obj_zval_ptr_unused(TSRMLS_C); offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC); - if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) { + if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) { HashTable *ht; int isset = 0; - ht = Z_ARRVAL_PP(container); + ht = Z_ARRVAL_P(container); switch (Z_TYPE_P(offset)) { case IS_DOUBLE: @@ -26790,9 +26780,7 @@ num_index_prop: if (IS_TMP_VAR == IS_CONST) { hval = Z_HASH_P(offset); } else { - if (!prop_dim) { - ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); - } + ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); if (IS_INTERNED(Z_STRVAL_P(offset))) { hval = INTERNED_HASH(Z_STRVAL_P(offset)); } else { @@ -26827,20 +26815,20 @@ num_index_prop: } } zval_dtor(free_op2.var); - } else if (Z_TYPE_PP(container) == IS_OBJECT) { + } else if (Z_TYPE_P(container) == IS_OBJECT) { if (1) { MAKE_REAL_ZVAL_PTR(offset); } if (prop_dim) { - if (Z_OBJ_HT_P(*container)->has_property) { - result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_TMP_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_property) { + result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_TMP_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check property of non-object"); result = 0; } } else { - if (Z_OBJ_HT_P(*container)->has_dimension) { - result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_dimension) { + result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check element of non-array"); result = 0; @@ -26851,7 +26839,7 @@ num_index_prop: } else { zval_dtor(free_op2.var); } - } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */ + } else if (Z_TYPE_P(container) == IS_STRING && !prop_dim) { /* string offsets */ zval tmp; if (Z_TYPE_P(offset) != IS_LONG) { @@ -26869,11 +26857,11 @@ num_index_prop: } if (Z_TYPE_P(offset) == IS_LONG) { if (opline->extended_value & ZEND_ISSET) { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) { result = 1; } } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container) && Z_STRVAL_P(container)[offset->value.lval] != '0') { result = 1; } } @@ -28072,22 +28060,22 @@ static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_VAR { USE_OPLINE zend_free_op free_op2; - zval **container; + zval *container; zval **value = NULL; int result = 0; ulong hval; zval *offset; SAVE_OPLINE(); - container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C); + container = _get_obj_zval_ptr_unused(TSRMLS_C); offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC); - if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) { + if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) { HashTable *ht; int isset = 0; - ht = Z_ARRVAL_PP(container); + ht = Z_ARRVAL_P(container); switch (Z_TYPE_P(offset)) { case IS_DOUBLE: @@ -28106,9 +28094,7 @@ num_index_prop: if (IS_VAR == IS_CONST) { hval = Z_HASH_P(offset); } else { - if (!prop_dim) { - ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); - } + ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); if (IS_INTERNED(Z_STRVAL_P(offset))) { hval = INTERNED_HASH(Z_STRVAL_P(offset)); } else { @@ -28143,20 +28129,20 @@ num_index_prop: } } if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; - } else if (Z_TYPE_PP(container) == IS_OBJECT) { + } else if (Z_TYPE_P(container) == IS_OBJECT) { if (0) { MAKE_REAL_ZVAL_PTR(offset); } if (prop_dim) { - if (Z_OBJ_HT_P(*container)->has_property) { - result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_property) { + result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check property of non-object"); result = 0; } } else { - if (Z_OBJ_HT_P(*container)->has_dimension) { - result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_dimension) { + result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check element of non-array"); result = 0; @@ -28167,7 +28153,7 @@ num_index_prop: } else { if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } - } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */ + } else if (Z_TYPE_P(container) == IS_STRING && !prop_dim) { /* string offsets */ zval tmp; if (Z_TYPE_P(offset) != IS_LONG) { @@ -28185,11 +28171,11 @@ num_index_prop: } if (Z_TYPE_P(offset) == IS_LONG) { if (opline->extended_value & ZEND_ISSET) { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) { result = 1; } } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container) && Z_STRVAL_P(container)[offset->value.lval] != '0') { result = 1; } } @@ -29808,22 +29794,22 @@ static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_CV( { USE_OPLINE - zval **container; + zval *container; zval **value = NULL; int result = 0; ulong hval; zval *offset; SAVE_OPLINE(); - container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C); + container = _get_obj_zval_ptr_unused(TSRMLS_C); offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC); - if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) { + if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) { HashTable *ht; int isset = 0; - ht = Z_ARRVAL_PP(container); + ht = Z_ARRVAL_P(container); switch (Z_TYPE_P(offset)) { case IS_DOUBLE: @@ -29842,9 +29828,7 @@ num_index_prop: if (IS_CV == IS_CONST) { hval = Z_HASH_P(offset); } else { - if (!prop_dim) { - ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); - } + ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); if (IS_INTERNED(Z_STRVAL_P(offset))) { hval = INTERNED_HASH(Z_STRVAL_P(offset)); } else { @@ -29879,20 +29863,20 @@ num_index_prop: } } - } else if (Z_TYPE_PP(container) == IS_OBJECT) { + } else if (Z_TYPE_P(container) == IS_OBJECT) { if (0) { MAKE_REAL_ZVAL_PTR(offset); } if (prop_dim) { - if (Z_OBJ_HT_P(*container)->has_property) { - result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_CV == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_property) { + result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_CV == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check property of non-object"); result = 0; } } else { - if (Z_OBJ_HT_P(*container)->has_dimension) { - result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_dimension) { + result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check element of non-array"); result = 0; @@ -29903,7 +29887,7 @@ num_index_prop: } else { } - } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */ + } else if (Z_TYPE_P(container) == IS_STRING && !prop_dim) { /* string offsets */ zval tmp; if (Z_TYPE_P(offset) != IS_LONG) { @@ -29921,11 +29905,11 @@ num_index_prop: } if (Z_TYPE_P(offset) == IS_LONG) { if (opline->extended_value & ZEND_ISSET) { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) { result = 1; } } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container) && Z_STRVAL_P(container)[offset->value.lval] != '0') { result = 1; } } @@ -33302,22 +33286,22 @@ static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_CONST(i { USE_OPLINE - zval **container; + zval *container; zval **value = NULL; int result = 0; ulong hval; zval *offset; SAVE_OPLINE(); - container = _get_zval_ptr_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC); + container = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC); offset = opline->op2.zv; - if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) { + if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) { HashTable *ht; int isset = 0; - ht = Z_ARRVAL_PP(container); + ht = Z_ARRVAL_P(container); switch (Z_TYPE_P(offset)) { case IS_DOUBLE: @@ -33336,9 +33320,7 @@ num_index_prop: if (IS_CONST == IS_CONST) { hval = Z_HASH_P(offset); } else { - if (!prop_dim) { - ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); - } + ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); if (IS_INTERNED(Z_STRVAL_P(offset))) { hval = INTERNED_HASH(Z_STRVAL_P(offset)); } else { @@ -33373,20 +33355,20 @@ num_index_prop: } } - } else if (Z_TYPE_PP(container) == IS_OBJECT) { + } else if (Z_TYPE_P(container) == IS_OBJECT) { if (0) { MAKE_REAL_ZVAL_PTR(offset); } if (prop_dim) { - if (Z_OBJ_HT_P(*container)->has_property) { - result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_CONST == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_property) { + result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_CONST == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check property of non-object"); result = 0; } } else { - if (Z_OBJ_HT_P(*container)->has_dimension) { - result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_dimension) { + result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check element of non-array"); result = 0; @@ -33397,7 +33379,7 @@ num_index_prop: } else { } - } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */ + } else if (Z_TYPE_P(container) == IS_STRING && !prop_dim) { /* string offsets */ zval tmp; if (Z_TYPE_P(offset) != IS_LONG) { @@ -33415,11 +33397,11 @@ num_index_prop: } if (Z_TYPE_P(offset) == IS_LONG) { if (opline->extended_value & ZEND_ISSET) { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) { result = 1; } } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container) && Z_STRVAL_P(container)[offset->value.lval] != '0') { result = 1; } } @@ -35258,22 +35240,22 @@ static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_TMP(int { USE_OPLINE zend_free_op free_op2; - zval **container; + zval *container; zval **value = NULL; int result = 0; ulong hval; zval *offset; SAVE_OPLINE(); - container = _get_zval_ptr_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC); + container = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC); offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC); - if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) { + if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) { HashTable *ht; int isset = 0; - ht = Z_ARRVAL_PP(container); + ht = Z_ARRVAL_P(container); switch (Z_TYPE_P(offset)) { case IS_DOUBLE: @@ -35292,9 +35274,7 @@ num_index_prop: if (IS_TMP_VAR == IS_CONST) { hval = Z_HASH_P(offset); } else { - if (!prop_dim) { - ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); - } + ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); if (IS_INTERNED(Z_STRVAL_P(offset))) { hval = INTERNED_HASH(Z_STRVAL_P(offset)); } else { @@ -35329,20 +35309,20 @@ num_index_prop: } } zval_dtor(free_op2.var); - } else if (Z_TYPE_PP(container) == IS_OBJECT) { + } else if (Z_TYPE_P(container) == IS_OBJECT) { if (1) { MAKE_REAL_ZVAL_PTR(offset); } if (prop_dim) { - if (Z_OBJ_HT_P(*container)->has_property) { - result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_TMP_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_property) { + result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_TMP_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check property of non-object"); result = 0; } } else { - if (Z_OBJ_HT_P(*container)->has_dimension) { - result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_dimension) { + result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check element of non-array"); result = 0; @@ -35353,7 +35333,7 @@ num_index_prop: } else { zval_dtor(free_op2.var); } - } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */ + } else if (Z_TYPE_P(container) == IS_STRING && !prop_dim) { /* string offsets */ zval tmp; if (Z_TYPE_P(offset) != IS_LONG) { @@ -35371,11 +35351,11 @@ num_index_prop: } if (Z_TYPE_P(offset) == IS_LONG) { if (opline->extended_value & ZEND_ISSET) { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) { result = 1; } } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container) && Z_STRVAL_P(container)[offset->value.lval] != '0') { result = 1; } } @@ -37595,22 +37575,22 @@ static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_VAR(int { USE_OPLINE zend_free_op free_op2; - zval **container; + zval *container; zval **value = NULL; int result = 0; ulong hval; zval *offset; SAVE_OPLINE(); - container = _get_zval_ptr_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC); + container = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC); offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC); - if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) { + if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) { HashTable *ht; int isset = 0; - ht = Z_ARRVAL_PP(container); + ht = Z_ARRVAL_P(container); switch (Z_TYPE_P(offset)) { case IS_DOUBLE: @@ -37629,9 +37609,7 @@ num_index_prop: if (IS_VAR == IS_CONST) { hval = Z_HASH_P(offset); } else { - if (!prop_dim) { - ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); - } + ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); if (IS_INTERNED(Z_STRVAL_P(offset))) { hval = INTERNED_HASH(Z_STRVAL_P(offset)); } else { @@ -37666,20 +37644,20 @@ num_index_prop: } } if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; - } else if (Z_TYPE_PP(container) == IS_OBJECT) { + } else if (Z_TYPE_P(container) == IS_OBJECT) { if (0) { MAKE_REAL_ZVAL_PTR(offset); } if (prop_dim) { - if (Z_OBJ_HT_P(*container)->has_property) { - result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_property) { + result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_VAR == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check property of non-object"); result = 0; } } else { - if (Z_OBJ_HT_P(*container)->has_dimension) { - result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_dimension) { + result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check element of non-array"); result = 0; @@ -37690,7 +37668,7 @@ num_index_prop: } else { if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } - } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */ + } else if (Z_TYPE_P(container) == IS_STRING && !prop_dim) { /* string offsets */ zval tmp; if (Z_TYPE_P(offset) != IS_LONG) { @@ -37708,11 +37686,11 @@ num_index_prop: } if (Z_TYPE_P(offset) == IS_LONG) { if (opline->extended_value & ZEND_ISSET) { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) { result = 1; } } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container) && Z_STRVAL_P(container)[offset->value.lval] != '0') { result = 1; } } @@ -40600,22 +40578,22 @@ static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_CV(int { USE_OPLINE - zval **container; + zval *container; zval **value = NULL; int result = 0; ulong hval; zval *offset; SAVE_OPLINE(); - container = _get_zval_ptr_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC); + container = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC); offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC); - if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) { + if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) { HashTable *ht; int isset = 0; - ht = Z_ARRVAL_PP(container); + ht = Z_ARRVAL_P(container); switch (Z_TYPE_P(offset)) { case IS_DOUBLE: @@ -40634,9 +40612,7 @@ num_index_prop: if (IS_CV == IS_CONST) { hval = Z_HASH_P(offset); } else { - if (!prop_dim) { - ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); - } + ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hval, goto num_index_prop); if (IS_INTERNED(Z_STRVAL_P(offset))) { hval = INTERNED_HASH(Z_STRVAL_P(offset)); } else { @@ -40671,20 +40647,20 @@ num_index_prop: } } - } else if (Z_TYPE_PP(container) == IS_OBJECT) { + } else if (Z_TYPE_P(container) == IS_OBJECT) { if (0) { MAKE_REAL_ZVAL_PTR(offset); } if (prop_dim) { - if (Z_OBJ_HT_P(*container)->has_property) { - result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_CV == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_property) { + result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((IS_CV == IS_CONST) ? opline->op2.literal : NULL) TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check property of non-object"); result = 0; } } else { - if (Z_OBJ_HT_P(*container)->has_dimension) { - result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); + if (Z_OBJ_HT_P(container)->has_dimension) { + result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0 TSRMLS_CC); } else { zend_error(E_NOTICE, "Trying to check element of non-array"); result = 0; @@ -40695,7 +40671,7 @@ num_index_prop: } else { } - } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */ + } else if (Z_TYPE_P(container) == IS_STRING && !prop_dim) { /* string offsets */ zval tmp; if (Z_TYPE_P(offset) != IS_LONG) { @@ -40713,11 +40689,11 @@ num_index_prop: } if (Z_TYPE_P(offset) == IS_LONG) { if (opline->extended_value & ZEND_ISSET) { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) { result = 1; } } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { - if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') { + if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container) && Z_STRVAL_P(container)[offset->value.lval] != '0') { result = 1; } } @@ -3688,7 +3688,7 @@ ac_config_headers="$ac_config_headers main/php_config.h" PHP_MAJOR_VERSION=5 PHP_MINOR_VERSION=5 -PHP_RELEASE_VERSION=5 +PHP_RELEASE_VERSION=6 PHP_EXTRA_VERSION="" PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION" PHP_VERSION_ID=`expr $PHP_MAJOR_VERSION \* 10000 + $PHP_MINOR_VERSION \* 100 + $PHP_RELEASE_VERSION` @@ -5257,7 +5257,7 @@ if ${php_cv_bison_version+:} false; then : $as_echo_n "(cached) " >&6 else - bison_version_vars=`bison --version 2> /dev/null | grep 'GNU Bison' | cut -d ' ' -f 4 | $SED -e 's/\./ /' | tr -d a-z` + bison_version_vars=`$YACC --version 2> /dev/null | grep 'GNU Bison' | cut -d ' ' -f 4 | $SED -e 's/\./ /g' | tr -d a-z` php_cv_bison_version=invalid if test -n "$bison_version_vars"; then set $bison_version_vars @@ -77642,6 +77642,27 @@ but you've either not enabled spl, or have disabled it. + + header_path=ext/phar + for header_file in php_phar.h; do + hp_hf="$header_path/$header_file" + + + unique=`echo $hp_hf|$SED 's/[^a-zA-Z0-9]/_/g'` + + cmd="echo $ac_n \"\$INSTALLHEADERS$unique$ac_c\"" + if test -n "$unique" && test "`eval $cmd`" = "" ; then + eval "INSTALLHEADERS$unique=set" + + INSTALL_HEADERS="$INSTALL_HEADERS $hp_hf" + + fi + + done + + + + PHP_OUTPUT_FILES="$PHP_OUTPUT_FILES ext/phar/phar.1 ext/phar/phar.phar.1" fi @@ -102605,7 +102626,7 @@ if ${php_cv_bison_version+:} false; then : $as_echo_n "(cached) " >&6 else - bison_version_vars=`bison --version 2> /dev/null | grep 'GNU Bison' | cut -d ' ' -f 4 | $SED -e 's/\./ /' | tr -d a-z` + bison_version_vars=`$YACC --version 2> /dev/null | grep 'GNU Bison' | cut -d ' ' -f 4 | $SED -e 's/\./ /g' | tr -d a-z` php_cv_bison_version=invalid if test -n "$bison_version_vars"; then set $bison_version_vars @@ -103499,7 +103520,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 103502 "configure" +#line 103523 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -105411,7 +105432,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 105414 "configure"' > conftest.$ac_ext + echo '#line 105435 "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -106803,7 +106824,7 @@ else LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat > conftest.$ac_ext <<EOF -#line 106806 "configure" +#line 106827 "configure" #include "confdefs.h" int main() { ; return 0; } @@ -106961,11 +106982,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"configure:106964: $lt_compile\"" >&5) + (eval echo "\"configure:106985: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "configure:106968: \$? = $ac_status" >&5 + echo "configure:106989: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -107259,11 +107280,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"configure:107262: $lt_compile\"" >&5) + (eval echo "\"configure:107283: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "configure:107266: \$? = $ac_status" >&5 + echo "configure:107287: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -107363,11 +107384,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"configure:107366: $lt_compile\"" >&5) + (eval echo "\"configure:107387: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "configure:107370: \$? = $ac_status" >&5 + echo "configure:107391: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -107827,7 +107848,7 @@ _LT_EOF # Determine the default libpath from the value encoded in an empty executable. cat > conftest.$ac_ext <<EOF -#line 107830 "configure" +#line 107851 "configure" #include "confdefs.h" int main() { ; return 0; } @@ -107869,7 +107890,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # Determine the default libpath from the value encoded in an empty executable. cat > conftest.$ac_ext <<EOF -#line 107872 "configure" +#line 107893 "configure" #include "confdefs.h" int main() { ; return 0; } @@ -109394,7 +109415,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 109397 "configure" +#line 109418 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -109494,7 +109515,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 109497 "configure" +#line 109518 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -110559,7 +110580,7 @@ case $host_os in # Determine the default libpath from the value encoded in an empty executable. cat > conftest.$ac_ext <<EOF -#line 110562 "configure" +#line 110583 "configure" #include "confdefs.h" int main() { ; return 0; } @@ -110602,7 +110623,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # Determine the default libpath from the value encoded in an empty executable. cat > conftest.$ac_ext <<EOF -#line 110605 "configure" +#line 110626 "configure" #include "confdefs.h" int main() { ; return 0; } @@ -111854,11 +111875,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"configure:111857: $lt_compile\"" >&5) + (eval echo "\"configure:111878: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "configure:111861: \$? = $ac_status" >&5 + echo "configure:111882: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -111958,11 +111979,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"configure:111961: $lt_compile\"" >&5) + (eval echo "\"configure:111982: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "configure:111965: \$? = $ac_status" >&5 + echo "configure:111986: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized diff --git a/configure.in b/configure.in index e3f342d6d..0cbb42012 100644 --- a/configure.in +++ b/configure.in @@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const char *format, ...); PHP_MAJOR_VERSION=5 PHP_MINOR_VERSION=5 -PHP_RELEASE_VERSION=5 +PHP_RELEASE_VERSION=6 PHP_EXTRA_VERSION="" PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION" PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION` diff --git a/ext/bz2/bz2_filter.c b/ext/bz2/bz2_filter.c index 335600232..1e7837b09 100644 --- a/ext/bz2/bz2_filter.c +++ b/ext/bz2/bz2_filter.c @@ -97,6 +97,7 @@ static php_stream_filter_status_t php_bz2_decompress_filter( status = BZ2_bzDecompressInit(streamp, 0, data->small_footprint); if (BZ_OK != status) { + php_stream_bucket_delref(bucket TSRMLS_CC); return PSFS_ERR_FATAL; } diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h index 8142aab56..91884a935 100644 --- a/ext/date/lib/timezonedb.h +++ b/ext/date/lib/timezonedb.h @@ -14,573 +14,573 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[579] = { { "Africa/Bujumbura" , 0x000571 }, { "Africa/Cairo" , 0x0005B5 }, { "Africa/Casablanca" , 0x000878 }, - { "Africa/Ceuta" , 0x000ABC }, - { "Africa/Conakry" , 0x000DC3 }, - { "Africa/Dakar" , 0x000E2E }, - { "Africa/Dar_es_Salaam" , 0x000E94 }, - { "Africa/Djibouti" , 0x000F01 }, - { "Africa/Douala" , 0x000F56 }, - { "Africa/El_Aaiun" , 0x000FAB }, - { "Africa/Freetown" , 0x001011 }, - { "Africa/Gaborone" , 0x001120 }, - { "Africa/Harare" , 0x00118D }, - { "Africa/Johannesburg" , 0x0011E2 }, - { "Africa/Juba" , 0x001250 }, - { "Africa/Kampala" , 0x001363 }, - { "Africa/Khartoum" , 0x0013E2 }, - { "Africa/Kigali" , 0x0014F5 }, - { "Africa/Kinshasa" , 0x00154A }, - { "Africa/Lagos" , 0x0015A5 }, - { "Africa/Libreville" , 0x0015FA }, - { "Africa/Lome" , 0x00164F }, - { "Africa/Luanda" , 0x001693 }, - { "Africa/Lubumbashi" , 0x0016E8 }, - { "Africa/Lusaka" , 0x001743 }, - { "Africa/Malabo" , 0x001798 }, - { "Africa/Maputo" , 0x0017FE }, - { "Africa/Maseru" , 0x001853 }, - { "Africa/Mbabane" , 0x0018BB }, - { "Africa/Mogadishu" , 0x001911 }, - { "Africa/Monrovia" , 0x00196C }, - { "Africa/Nairobi" , 0x0019D2 }, - { "Africa/Ndjamena" , 0x001A51 }, - { "Africa/Niamey" , 0x001ABD }, - { "Africa/Nouakchott" , 0x001B30 }, - { "Africa/Ouagadougou" , 0x001B9B }, - { "Africa/Porto-Novo" , 0x001BF0 }, - { "Africa/Sao_Tome" , 0x001C56 }, - { "Africa/Timbuktu" , 0x001CAB }, - { "Africa/Tripoli" , 0x001D16 }, - { "Africa/Tunis" , 0x001F0F }, - { "Africa/Windhoek" , 0x002021 }, - { "America/Adak" , 0x002268 }, - { "America/Anchorage" , 0x0025DE }, - { "America/Anguilla" , 0x002952 }, - { "America/Antigua" , 0x0029A7 }, - { "America/Araguaina" , 0x002A0D }, - { "America/Argentina/Buenos_Aires" , 0x002B72 }, - { "America/Argentina/Catamarca" , 0x002D20 }, - { "America/Argentina/ComodRivadavia" , 0x002EE1 }, - { "America/Argentina/Cordoba" , 0x003087 }, - { "America/Argentina/Jujuy" , 0x00325C }, - { "America/Argentina/La_Rioja" , 0x003410 }, - { "America/Argentina/Mendoza" , 0x0035C8 }, - { "America/Argentina/Rio_Gallegos" , 0x003788 }, - { "America/Argentina/Salta" , 0x00393D }, - { "America/Argentina/San_Juan" , 0x003AE9 }, - { "America/Argentina/San_Luis" , 0x003CA1 }, - { "America/Argentina/Tucuman" , 0x003E67 }, - { "America/Argentina/Ushuaia" , 0x004023 }, - { "America/Aruba" , 0x0041DE }, - { "America/Asuncion" , 0x004244 }, - { "America/Atikokan" , 0x004529 }, - { "America/Atka" , 0x0045FF }, - { "America/Bahia" , 0x004965 }, - { "America/Bahia_Banderas" , 0x004AF8 }, - { "America/Barbados" , 0x004D71 }, - { "America/Belem" , 0x004E0B }, - { "America/Belize" , 0x004F06 }, - { "America/Blanc-Sablon" , 0x005082 }, - { "America/Boa_Vista" , 0x005136 }, - { "America/Bogota" , 0x00523F }, - { "America/Boise" , 0x0052AB }, - { "America/Buenos_Aires" , 0x005642 }, - { "America/Cambridge_Bay" , 0x0057DB }, - { "America/Campo_Grande" , 0x005B03 }, - { "America/Cancun" , 0x005DF2 }, - { "America/Caracas" , 0x006034 }, - { "America/Catamarca" , 0x00609B }, - { "America/Cayenne" , 0x006241 }, - { "America/Cayman" , 0x0062A3 }, - { "America/Chicago" , 0x0062F8 }, - { "America/Chihuahua" , 0x00680F }, - { "America/Coral_Harbour" , 0x006A7A }, - { "America/Cordoba" , 0x006B0C }, - { "America/Costa_Rica" , 0x006CB2 }, - { "America/Creston" , 0x006D3C }, - { "America/Cuiaba" , 0x006DC8 }, - { "America/Curacao" , 0x0070A6 }, - { "America/Danmarkshavn" , 0x00710C }, - { "America/Dawson" , 0x007250 }, - { "America/Dawson_Creek" , 0x00756D }, - { "America/Denver" , 0x007747 }, - { "America/Detroit" , 0x007ACD }, - { "America/Dominica" , 0x007E2C }, - { "America/Edmonton" , 0x007E81 }, - { "America/Eirunepe" , 0x008239 }, - { "America/El_Salvador" , 0x00834C }, - { "America/Ensenada" , 0x0083C1 }, - { "America/Fort_Wayne" , 0x008868 }, - { "America/Fortaleza" , 0x00872A }, - { "America/Glace_Bay" , 0x008AD2 }, - { "America/Godthab" , 0x008E49 }, - { "America/Goose_Bay" , 0x00910D }, - { "America/Grand_Turk" , 0x0095CA }, - { "America/Grenada" , 0x009879 }, - { "America/Guadeloupe" , 0x0098CE }, - { "America/Guatemala" , 0x009923 }, - { "America/Guayaquil" , 0x0099AC }, - { "America/Guyana" , 0x009A09 }, - { "America/Halifax" , 0x009A8A }, - { "America/Havana" , 0x009FA0 }, - { "America/Hermosillo" , 0x00A313 }, - { "America/Indiana/Indianapolis" , 0x00A3F1 }, - { "America/Indiana/Knox" , 0x00A682 }, - { "America/Indiana/Marengo" , 0x00AA19 }, - { "America/Indiana/Petersburg" , 0x00ACBF }, - { "America/Indiana/Tell_City" , 0x00B20C }, - { "America/Indiana/Vevay" , 0x00B4A5 }, - { "America/Indiana/Vincennes" , 0x00B6E0 }, - { "America/Indiana/Winamac" , 0x00B994 }, - { "America/Indianapolis" , 0x00AFA2 }, - { "America/Inuvik" , 0x00BC4D }, - { "America/Iqaluit" , 0x00BF44 }, - { "America/Jamaica" , 0x00C266 }, - { "America/Jujuy" , 0x00C32B }, - { "America/Juneau" , 0x00C4D5 }, - { "America/Kentucky/Louisville" , 0x00C853 }, - { "America/Kentucky/Monticello" , 0x00CC71 }, - { "America/Knox_IN" , 0x00CFF6 }, - { "America/Kralendijk" , 0x00D367 }, - { "America/La_Paz" , 0x00D3CD }, - { "America/Lima" , 0x00D434 }, - { "America/Los_Angeles" , 0x00D4DC }, - { "America/Louisville" , 0x00D8ED }, - { "America/Lower_Princes" , 0x00DCE2 }, - { "America/Maceio" , 0x00DD48 }, - { "America/Managua" , 0x00DE82 }, - { "America/Manaus" , 0x00DF35 }, - { "America/Marigot" , 0x00E037 }, - { "America/Martinique" , 0x00E08C }, - { "America/Matamoros" , 0x00E0F8 }, - { "America/Mazatlan" , 0x00E351 }, - { "America/Mendoza" , 0x00E5BE }, - { "America/Menominee" , 0x00E772 }, - { "America/Merida" , 0x00EAF3 }, - { "America/Metlakatla" , 0x00ED2E }, - { "America/Mexico_City" , 0x00EE68 }, - { "America/Miquelon" , 0x00F0E3 }, - { "America/Moncton" , 0x00F355 }, - { "America/Monterrey" , 0x00F7EC }, - { "America/Montevideo" , 0x00FA4F }, - { "America/Montreal" , 0x00FD61 }, - { "America/Montserrat" , 0x010251 }, - { "America/Nassau" , 0x0102A6 }, - { "America/New_York" , 0x0105EB }, - { "America/Nipigon" , 0x010AF6 }, - { "America/Nome" , 0x010E47 }, - { "America/Noronha" , 0x0111C5 }, - { "America/North_Dakota/Beulah" , 0x0112F5 }, - { "America/North_Dakota/Center" , 0x011689 }, - { "America/North_Dakota/New_Salem" , 0x011A1D }, - { "America/Ojinaga" , 0x011DC6 }, - { "America/Panama" , 0x012027 }, - { "America/Pangnirtung" , 0x01207C }, - { "America/Paramaribo" , 0x0123B2 }, - { "America/Phoenix" , 0x012444 }, - { "America/Port-au-Prince" , 0x012502 }, - { "America/Port_of_Spain" , 0x012821 }, - { "America/Porto_Acre" , 0x012722 }, - { "America/Porto_Velho" , 0x012876 }, - { "America/Puerto_Rico" , 0x01296C }, - { "America/Rainy_River" , 0x0129D7 }, - { "America/Rankin_Inlet" , 0x012D0F }, - { "America/Recife" , 0x012FF5 }, - { "America/Regina" , 0x01311F }, - { "America/Resolute" , 0x0132DD }, - { "America/Rio_Branco" , 0x0135CE }, - { "America/Rosario" , 0x0136D1 }, - { "America/Santa_Isabel" , 0x013877 }, - { "America/Santarem" , 0x013C1A }, - { "America/Santiago" , 0x013D1F }, - { "America/Santo_Domingo" , 0x0140C8 }, - { "America/Sao_Paulo" , 0x01418E }, - { "America/Scoresbysund" , 0x01449D }, - { "America/Shiprock" , 0x01478B }, - { "America/Sitka" , 0x014B04 }, - { "America/St_Barthelemy" , 0x014E8C }, - { "America/St_Johns" , 0x014EE1 }, - { "America/St_Kitts" , 0x015434 }, - { "America/St_Lucia" , 0x015489 }, - { "America/St_Thomas" , 0x0154DE }, - { "America/St_Vincent" , 0x015533 }, - { "America/Swift_Current" , 0x015588 }, - { "America/Tegucigalpa" , 0x0156A9 }, - { "America/Thule" , 0x015728 }, - { "America/Thunder_Bay" , 0x01596F }, - { "America/Tijuana" , 0x015CB8 }, - { "America/Toronto" , 0x016051 }, - { "America/Tortola" , 0x016571 }, - { "America/Vancouver" , 0x0165C6 }, - { "America/Virgin" , 0x016A03 }, - { "America/Whitehorse" , 0x016A58 }, - { "America/Winnipeg" , 0x016D75 }, - { "America/Yakutat" , 0x0171B5 }, - { "America/Yellowknife" , 0x017520 }, - { "Antarctica/Casey" , 0x017830 }, - { "Antarctica/Davis" , 0x0178CD }, - { "Antarctica/DumontDUrville" , 0x01796E }, - { "Antarctica/Macquarie" , 0x017A00 }, - { "Antarctica/Mawson" , 0x017C47 }, - { "Antarctica/McMurdo" , 0x017CC3 }, - { "Antarctica/Palmer" , 0x01806E }, - { "Antarctica/Rothera" , 0x01838A }, - { "Antarctica/South_Pole" , 0x018400 }, - { "Antarctica/Syowa" , 0x01877E }, - { "Antarctica/Vostok" , 0x0187EC }, - { "Arctic/Longyearbyen" , 0x01885D }, - { "Asia/Aden" , 0x018B8F }, - { "Asia/Almaty" , 0x018BE4 }, - { "Asia/Amman" , 0x018D63 }, - { "Asia/Anadyr" , 0x018F35 }, - { "Asia/Aqtau" , 0x01911A }, - { "Asia/Aqtobe" , 0x019319 }, - { "Asia/Ashgabat" , 0x0194D1 }, - { "Asia/Ashkhabad" , 0x0195EE }, - { "Asia/Baghdad" , 0x01970B }, - { "Asia/Bahrain" , 0x019880 }, - { "Asia/Baku" , 0x0198E6 }, - { "Asia/Bangkok" , 0x019BCE }, - { "Asia/Beirut" , 0x019C23 }, - { "Asia/Bishkek" , 0x019F30 }, - { "Asia/Brunei" , 0x01A0DC }, - { "Asia/Calcutta" , 0x01A13E }, - { "Asia/Choibalsan" , 0x01A1B7 }, - { "Asia/Chongqing" , 0x01A330 }, - { "Asia/Chungking" , 0x01A41F }, - { "Asia/Colombo" , 0x01A4CE }, - { "Asia/Dacca" , 0x01A56A }, - { "Asia/Damascus" , 0x01A610 }, - { "Asia/Dhaka" , 0x01A960 }, - { "Asia/Dili" , 0x01AA06 }, - { "Asia/Dubai" , 0x01AA90 }, - { "Asia/Dushanbe" , 0x01AAE5 }, - { "Asia/Gaza" , 0x01ABE8 }, - { "Asia/Harbin" , 0x01AF3B }, - { "Asia/Hebron" , 0x01B022 }, - { "Asia/Ho_Chi_Minh" , 0x01B37E }, - { "Asia/Hong_Kong" , 0x01B3F6 }, - { "Asia/Hovd" , 0x01B5B8 }, - { "Asia/Irkutsk" , 0x01B730 }, - { "Asia/Istanbul" , 0x01B916 }, - { "Asia/Jakarta" , 0x01BD03 }, - { "Asia/Jayapura" , 0x01BDAD }, - { "Asia/Jerusalem" , 0x01BE49 }, - { "Asia/Kabul" , 0x01C178 }, - { "Asia/Kamchatka" , 0x01C1C9 }, - { "Asia/Karachi" , 0x01C3A5 }, - { "Asia/Kashgar" , 0x01C45A }, - { "Asia/Kathmandu" , 0x01C52B }, - { "Asia/Katmandu" , 0x01C591 }, - { "Asia/Khandyga" , 0x01C5F7 }, - { "Asia/Kolkata" , 0x01C81C }, - { "Asia/Krasnoyarsk" , 0x01C895 }, - { "Asia/Kuala_Lumpur" , 0x01CA7D }, - { "Asia/Kuching" , 0x01CB3A }, - { "Asia/Kuwait" , 0x01CC28 }, - { "Asia/Macao" , 0x01CC7D }, - { "Asia/Macau" , 0x01CDB8 }, - { "Asia/Magadan" , 0x01CEF3 }, - { "Asia/Makassar" , 0x01D0D5 }, - { "Asia/Manila" , 0x01D19A }, - { "Asia/Muscat" , 0x01D21F }, - { "Asia/Nicosia" , 0x01D274 }, - { "Asia/Novokuznetsk" , 0x01D55C }, - { "Asia/Novosibirsk" , 0x01D75E }, - { "Asia/Omsk" , 0x01D949 }, - { "Asia/Oral" , 0x01DB30 }, - { "Asia/Phnom_Penh" , 0x01DD00 }, - { "Asia/Pontianak" , 0x01DD78 }, - { "Asia/Pyongyang" , 0x01DE3A }, - { "Asia/Qatar" , 0x01DEA7 }, - { "Asia/Qyzylorda" , 0x01DF0D }, - { "Asia/Rangoon" , 0x01E0E3 }, - { "Asia/Riyadh" , 0x01E15B }, - { "Asia/Saigon" , 0x01E1B0 }, - { "Asia/Sakhalin" , 0x01E228 }, - { "Asia/Samarkand" , 0x01E41F }, - { "Asia/Seoul" , 0x01E555 }, - { "Asia/Shanghai" , 0x01E5F9 }, - { "Asia/Singapore" , 0x01E6D9 }, - { "Asia/Taipei" , 0x01E790 }, - { "Asia/Tashkent" , 0x01E8A8 }, - { "Asia/Tbilisi" , 0x01E9D9 }, - { "Asia/Tehran" , 0x01EB93 }, - { "Asia/Tel_Aviv" , 0x01EE01 }, - { "Asia/Thimbu" , 0x01F130 }, - { "Asia/Thimphu" , 0x01F196 }, - { "Asia/Tokyo" , 0x01F1FC }, - { "Asia/Ujung_Pandang" , 0x01F285 }, - { "Asia/Ulaanbaatar" , 0x01F302 }, - { "Asia/Ulan_Bator" , 0x01F45D }, - { "Asia/Urumqi" , 0x01F5AA }, - { "Asia/Ust-Nera" , 0x01F671 }, - { "Asia/Vientiane" , 0x01F876 }, - { "Asia/Vladivostok" , 0x01F8EE }, - { "Asia/Yakutsk" , 0x01FADA }, - { "Asia/Yekaterinburg" , 0x01FCBF }, - { "Asia/Yerevan" , 0x01FECA }, - { "Atlantic/Azores" , 0x0200CA }, - { "Atlantic/Bermuda" , 0x0205CD }, - { "Atlantic/Canary" , 0x0208AE }, - { "Atlantic/Cape_Verde" , 0x020B84 }, - { "Atlantic/Faeroe" , 0x020BFD }, - { "Atlantic/Faroe" , 0x020EA1 }, - { "Atlantic/Jan_Mayen" , 0x021145 }, - { "Atlantic/Madeira" , 0x021477 }, - { "Atlantic/Reykjavik" , 0x021980 }, - { "Atlantic/South_Georgia" , 0x021B39 }, - { "Atlantic/St_Helena" , 0x021D4B }, - { "Atlantic/Stanley" , 0x021B7D }, - { "Australia/ACT" , 0x021DA0 }, - { "Australia/Adelaide" , 0x0220BD }, - { "Australia/Brisbane" , 0x0223E9 }, - { "Australia/Broken_Hill" , 0x0224B0 }, - { "Australia/Canberra" , 0x0227EE }, - { "Australia/Currie" , 0x022B0B }, - { "Australia/Darwin" , 0x022E3E }, - { "Australia/Eucla" , 0x022EC4 }, - { "Australia/Hobart" , 0x022F99 }, - { "Australia/LHI" , 0x0232F7 }, - { "Australia/Lindeman" , 0x023592 }, - { "Australia/Lord_Howe" , 0x023673 }, - { "Australia/Melbourne" , 0x02391E }, - { "Australia/North" , 0x023C43 }, - { "Australia/NSW" , 0x023CB7 }, - { "Australia/Perth" , 0x023FD4 }, - { "Australia/Queensland" , 0x0240AC }, - { "Australia/South" , 0x024158 }, - { "Australia/Sydney" , 0x024475 }, - { "Australia/Tasmania" , 0x0247B2 }, - { "Australia/Victoria" , 0x024AF7 }, - { "Australia/West" , 0x024E14 }, - { "Australia/Yancowinna" , 0x024ECA }, - { "Brazil/Acre" , 0x0251EC }, - { "Brazil/DeNoronha" , 0x0252EB }, - { "Brazil/East" , 0x02540B }, - { "Brazil/West" , 0x0256E8 }, - { "Canada/Atlantic" , 0x0257E0 }, - { "Canada/Central" , 0x025CC8 }, - { "Canada/East-Saskatchewan" , 0x0265D2 }, - { "Canada/Eastern" , 0x0260E2 }, - { "Canada/Mountain" , 0x02675B }, - { "Canada/Newfoundland" , 0x026AD1 }, - { "Canada/Pacific" , 0x026FFC }, - { "Canada/Saskatchewan" , 0x027415 }, - { "Canada/Yukon" , 0x02759E }, - { "CET" , 0x0278A1 }, - { "Chile/Continental" , 0x027BAA }, - { "Chile/EasterIsland" , 0x027F45 }, - { "CST6CDT" , 0x028287 }, - { "Cuba" , 0x0285D8 }, - { "EET" , 0x02894B }, - { "Egypt" , 0x028BFE }, - { "Eire" , 0x028EC1 }, - { "EST" , 0x0293D2 }, - { "EST5EDT" , 0x029416 }, - { "Etc/GMT" , 0x029767 }, - { "Etc/GMT+0" , 0x029833 }, - { "Etc/GMT+1" , 0x0298BD }, - { "Etc/GMT+10" , 0x02994A }, - { "Etc/GMT+11" , 0x0299D8 }, - { "Etc/GMT+12" , 0x029A66 }, - { "Etc/GMT+2" , 0x029B81 }, - { "Etc/GMT+3" , 0x029C0D }, - { "Etc/GMT+4" , 0x029C99 }, - { "Etc/GMT+5" , 0x029D25 }, - { "Etc/GMT+6" , 0x029DB1 }, - { "Etc/GMT+7" , 0x029E3D }, - { "Etc/GMT+8" , 0x029EC9 }, - { "Etc/GMT+9" , 0x029F55 }, - { "Etc/GMT-0" , 0x0297EF }, - { "Etc/GMT-1" , 0x029877 }, - { "Etc/GMT-10" , 0x029903 }, - { "Etc/GMT-11" , 0x029991 }, - { "Etc/GMT-12" , 0x029A1F }, - { "Etc/GMT-13" , 0x029AAD }, - { "Etc/GMT-14" , 0x029AF4 }, - { "Etc/GMT-2" , 0x029B3B }, - { "Etc/GMT-3" , 0x029BC7 }, - { "Etc/GMT-4" , 0x029C53 }, - { "Etc/GMT-5" , 0x029CDF }, - { "Etc/GMT-6" , 0x029D6B }, - { "Etc/GMT-7" , 0x029DF7 }, - { "Etc/GMT-8" , 0x029E83 }, - { "Etc/GMT-9" , 0x029F0F }, - { "Etc/GMT0" , 0x0297AB }, - { "Etc/Greenwich" , 0x029F9B }, - { "Etc/UCT" , 0x029FDF }, - { "Etc/Universal" , 0x02A023 }, - { "Etc/UTC" , 0x02A067 }, - { "Etc/Zulu" , 0x02A0AB }, - { "Europe/Amsterdam" , 0x02A0EF }, - { "Europe/Andorra" , 0x02A52D }, - { "Europe/Athens" , 0x02A7A9 }, - { "Europe/Belfast" , 0x02AAEC }, - { "Europe/Belgrade" , 0x02B023 }, - { "Europe/Berlin" , 0x02B2EC }, - { "Europe/Bratislava" , 0x02B650 }, - { "Europe/Brussels" , 0x02B982 }, - { "Europe/Bucharest" , 0x02BDB9 }, - { "Europe/Budapest" , 0x02C0E3 }, - { "Europe/Busingen" , 0x02C456 }, - { "Europe/Chisinau" , 0x02C70D }, - { "Europe/Copenhagen" , 0x02CA9B }, - { "Europe/Dublin" , 0x02CDA5 }, - { "Europe/Gibraltar" , 0x02D2B6 }, - { "Europe/Guernsey" , 0x02D70D }, - { "Europe/Helsinki" , 0x02DC44 }, - { "Europe/Isle_of_Man" , 0x02DEFA }, - { "Europe/Istanbul" , 0x02E431 }, - { "Europe/Jersey" , 0x02E81E }, - { "Europe/Kaliningrad" , 0x02ED55 }, - { "Europe/Kiev" , 0x02EFBB }, - { "Europe/Lisbon" , 0x02F2D2 }, - { "Europe/Ljubljana" , 0x02F7D6 }, - { "Europe/London" , 0x02FA9F }, - { "Europe/Luxembourg" , 0x02FFD6 }, - { "Europe/Madrid" , 0x03042C }, - { "Europe/Malta" , 0x0307F2 }, - { "Europe/Mariehamn" , 0x030BAB }, - { "Europe/Minsk" , 0x030E61 }, - { "Europe/Monaco" , 0x03106F }, - { "Europe/Moscow" , 0x0314AA }, - { "Europe/Nicosia" , 0x0316FB }, - { "Europe/Oslo" , 0x0319E3 }, - { "Europe/Paris" , 0x031D15 }, - { "Europe/Podgorica" , 0x03215B }, - { "Europe/Prague" , 0x032424 }, - { "Europe/Riga" , 0x032756 }, - { "Europe/Rome" , 0x032A9B }, - { "Europe/Samara" , 0x032E5E }, - { "Europe/San_Marino" , 0x033091 }, - { "Europe/Sarajevo" , 0x033454 }, - { "Europe/Simferopol" , 0x03371D }, - { "Europe/Skopje" , 0x033A48 }, - { "Europe/Sofia" , 0x033D11 }, - { "Europe/Stockholm" , 0x034019 }, - { "Europe/Tallinn" , 0x0342C8 }, - { "Europe/Tirane" , 0x034602 }, - { "Europe/Tiraspol" , 0x034908 }, - { "Europe/Uzhgorod" , 0x034C96 }, - { "Europe/Vaduz" , 0x034FAD }, - { "Europe/Vatican" , 0x03525C }, - { "Europe/Vienna" , 0x03561F }, - { "Europe/Vilnius" , 0x03594C }, - { "Europe/Volgograd" , 0x035C8B }, - { "Europe/Warsaw" , 0x035E8B }, - { "Europe/Zagreb" , 0x03626C }, - { "Europe/Zaporozhye" , 0x036535 }, - { "Europe/Zurich" , 0x036876 }, - { "Factory" , 0x036B25 }, - { "GB" , 0x036B96 }, - { "GB-Eire" , 0x0370CD }, - { "GMT" , 0x037604 }, - { "GMT+0" , 0x0376D0 }, - { "GMT-0" , 0x03768C }, - { "GMT0" , 0x037648 }, - { "Greenwich" , 0x037714 }, - { "Hongkong" , 0x037758 }, - { "HST" , 0x03791A }, - { "Iceland" , 0x03795E }, - { "Indian/Antananarivo" , 0x037B17 }, - { "Indian/Chagos" , 0x037B8B }, - { "Indian/Christmas" , 0x037BED }, - { "Indian/Cocos" , 0x037C31 }, - { "Indian/Comoro" , 0x037C75 }, - { "Indian/Kerguelen" , 0x037CCA }, - { "Indian/Mahe" , 0x037D1F }, - { "Indian/Maldives" , 0x037D74 }, - { "Indian/Mauritius" , 0x037DC9 }, - { "Indian/Mayotte" , 0x037E3F }, - { "Indian/Reunion" , 0x037E94 }, - { "Iran" , 0x037EE9 }, - { "Israel" , 0x038157 }, - { "Jamaica" , 0x038486 }, - { "Japan" , 0x03854B }, - { "Kwajalein" , 0x0385D4 }, - { "Libya" , 0x038637 }, - { "MET" , 0x038830 }, - { "Mexico/BajaNorte" , 0x038B39 }, - { "Mexico/BajaSur" , 0x038EA2 }, - { "Mexico/General" , 0x0390E7 }, - { "MST" , 0x039345 }, - { "MST7MDT" , 0x039389 }, - { "Navajo" , 0x0396DA }, - { "NZ" , 0x039A53 }, - { "NZ-CHAT" , 0x039DD1 }, - { "Pacific/Apia" , 0x03A0B9 }, - { "Pacific/Auckland" , 0x03A255 }, - { "Pacific/Chatham" , 0x03A5E1 }, - { "Pacific/Chuuk" , 0x03A8D8 }, - { "Pacific/Easter" , 0x03A931 }, - { "Pacific/Efate" , 0x03AC8F }, - { "Pacific/Enderbury" , 0x03AD55 }, - { "Pacific/Fakaofo" , 0x03ADC3 }, - { "Pacific/Fiji" , 0x03AE14 }, - { "Pacific/Funafuti" , 0x03AFA7 }, - { "Pacific/Galapagos" , 0x03AFEB }, - { "Pacific/Gambier" , 0x03B063 }, - { "Pacific/Guadalcanal" , 0x03B0C8 }, - { "Pacific/Guam" , 0x03B11D }, - { "Pacific/Honolulu" , 0x03B173 }, - { "Pacific/Johnston" , 0x03B1EA }, - { "Pacific/Kiritimati" , 0x03B269 }, - { "Pacific/Kosrae" , 0x03B2D4 }, - { "Pacific/Kwajalein" , 0x03B331 }, - { "Pacific/Majuro" , 0x03B39D }, - { "Pacific/Marquesas" , 0x03B3FC }, - { "Pacific/Midway" , 0x03B463 }, - { "Pacific/Nauru" , 0x03B4ED }, - { "Pacific/Niue" , 0x03B565 }, - { "Pacific/Norfolk" , 0x03B5C3 }, - { "Pacific/Noumea" , 0x03B618 }, - { "Pacific/Pago_Pago" , 0x03B6A8 }, - { "Pacific/Palau" , 0x03B731 }, - { "Pacific/Pitcairn" , 0x03B775 }, - { "Pacific/Pohnpei" , 0x03B7CA }, - { "Pacific/Ponape" , 0x03B81F }, - { "Pacific/Port_Moresby" , 0x03B864 }, - { "Pacific/Rarotonga" , 0x03B8A8 }, - { "Pacific/Saipan" , 0x03B984 }, - { "Pacific/Samoa" , 0x03B9E7 }, - { "Pacific/Tahiti" , 0x03BA70 }, - { "Pacific/Tarawa" , 0x03BAD5 }, - { "Pacific/Tongatapu" , 0x03BB29 }, - { "Pacific/Truk" , 0x03BBB5 }, - { "Pacific/Wake" , 0x03BBFA }, - { "Pacific/Wallis" , 0x03BC4A }, - { "Pacific/Yap" , 0x03BC8E }, - { "Poland" , 0x03BCD3 }, - { "Portugal" , 0x03C0B4 }, - { "PRC" , 0x03C5B0 }, - { "PST8PDT" , 0x03C661 }, - { "ROC" , 0x03C9B2 }, - { "ROK" , 0x03CACA }, - { "Singapore" , 0x03CB6E }, - { "Turkey" , 0x03CC25 }, - { "UCT" , 0x03D012 }, - { "Universal" , 0x03D056 }, - { "US/Alaska" , 0x03D09A }, - { "US/Aleutian" , 0x03D403 }, - { "US/Arizona" , 0x03D769 }, - { "US/Central" , 0x03D7F7 }, - { "US/East-Indiana" , 0x03E201 }, - { "US/Eastern" , 0x03DD02 }, - { "US/Hawaii" , 0x03E46B }, - { "US/Indiana-Starke" , 0x03E4DC }, - { "US/Michigan" , 0x03E84D }, - { "US/Mountain" , 0x03EB84 }, - { "US/Pacific" , 0x03EEFD }, - { "US/Pacific-New" , 0x03F302 }, - { "US/Samoa" , 0x03F707 }, - { "UTC" , 0x03F790 }, - { "W-SU" , 0x03FA87 }, - { "WET" , 0x03F7D4 }, - { "Zulu" , 0x03FCC1 }, + { "Africa/Ceuta" , 0x000ADA }, + { "Africa/Conakry" , 0x000DE1 }, + { "Africa/Dakar" , 0x000E4C }, + { "Africa/Dar_es_Salaam" , 0x000EB2 }, + { "Africa/Djibouti" , 0x000F1F }, + { "Africa/Douala" , 0x000F74 }, + { "Africa/El_Aaiun" , 0x000FC9 }, + { "Africa/Freetown" , 0x0011F4 }, + { "Africa/Gaborone" , 0x001303 }, + { "Africa/Harare" , 0x001370 }, + { "Africa/Johannesburg" , 0x0013C5 }, + { "Africa/Juba" , 0x001433 }, + { "Africa/Kampala" , 0x001546 }, + { "Africa/Khartoum" , 0x0015C5 }, + { "Africa/Kigali" , 0x0016D8 }, + { "Africa/Kinshasa" , 0x00172D }, + { "Africa/Lagos" , 0x001788 }, + { "Africa/Libreville" , 0x0017DD }, + { "Africa/Lome" , 0x001832 }, + { "Africa/Luanda" , 0x001876 }, + { "Africa/Lubumbashi" , 0x0018CB }, + { "Africa/Lusaka" , 0x001926 }, + { "Africa/Malabo" , 0x00197B }, + { "Africa/Maputo" , 0x0019E1 }, + { "Africa/Maseru" , 0x001A36 }, + { "Africa/Mbabane" , 0x001A9E }, + { "Africa/Mogadishu" , 0x001AF4 }, + { "Africa/Monrovia" , 0x001B4F }, + { "Africa/Nairobi" , 0x001BB5 }, + { "Africa/Ndjamena" , 0x001C34 }, + { "Africa/Niamey" , 0x001CA0 }, + { "Africa/Nouakchott" , 0x001D13 }, + { "Africa/Ouagadougou" , 0x001D7E }, + { "Africa/Porto-Novo" , 0x001DD3 }, + { "Africa/Sao_Tome" , 0x001E39 }, + { "Africa/Timbuktu" , 0x001E8E }, + { "Africa/Tripoli" , 0x001EF9 }, + { "Africa/Tunis" , 0x002002 }, + { "Africa/Windhoek" , 0x002114 }, + { "America/Adak" , 0x00235B }, + { "America/Anchorage" , 0x0026D1 }, + { "America/Anguilla" , 0x002A45 }, + { "America/Antigua" , 0x002A9A }, + { "America/Araguaina" , 0x002B00 }, + { "America/Argentina/Buenos_Aires" , 0x002C65 }, + { "America/Argentina/Catamarca" , 0x002E13 }, + { "America/Argentina/ComodRivadavia" , 0x002FD4 }, + { "America/Argentina/Cordoba" , 0x00317A }, + { "America/Argentina/Jujuy" , 0x00334F }, + { "America/Argentina/La_Rioja" , 0x003503 }, + { "America/Argentina/Mendoza" , 0x0036BB }, + { "America/Argentina/Rio_Gallegos" , 0x00387B }, + { "America/Argentina/Salta" , 0x003A30 }, + { "America/Argentina/San_Juan" , 0x003BDC }, + { "America/Argentina/San_Luis" , 0x003D94 }, + { "America/Argentina/Tucuman" , 0x003F5A }, + { "America/Argentina/Ushuaia" , 0x004116 }, + { "America/Aruba" , 0x0042D1 }, + { "America/Asuncion" , 0x004337 }, + { "America/Atikokan" , 0x00461C }, + { "America/Atka" , 0x0046F2 }, + { "America/Bahia" , 0x004A58 }, + { "America/Bahia_Banderas" , 0x004BEB }, + { "America/Barbados" , 0x004E64 }, + { "America/Belem" , 0x004EFE }, + { "America/Belize" , 0x004FF9 }, + { "America/Blanc-Sablon" , 0x005175 }, + { "America/Boa_Vista" , 0x005229 }, + { "America/Bogota" , 0x005332 }, + { "America/Boise" , 0x00539E }, + { "America/Buenos_Aires" , 0x005735 }, + { "America/Cambridge_Bay" , 0x0058CE }, + { "America/Campo_Grande" , 0x005BF6 }, + { "America/Cancun" , 0x005EE5 }, + { "America/Caracas" , 0x006127 }, + { "America/Catamarca" , 0x00618E }, + { "America/Cayenne" , 0x006334 }, + { "America/Cayman" , 0x006396 }, + { "America/Chicago" , 0x0063EB }, + { "America/Chihuahua" , 0x006902 }, + { "America/Coral_Harbour" , 0x006B6D }, + { "America/Cordoba" , 0x006BFF }, + { "America/Costa_Rica" , 0x006DA5 }, + { "America/Creston" , 0x006E2F }, + { "America/Cuiaba" , 0x006EBB }, + { "America/Curacao" , 0x007199 }, + { "America/Danmarkshavn" , 0x0071FF }, + { "America/Dawson" , 0x007343 }, + { "America/Dawson_Creek" , 0x007660 }, + { "America/Denver" , 0x00783A }, + { "America/Detroit" , 0x007BC0 }, + { "America/Dominica" , 0x007F1F }, + { "America/Edmonton" , 0x007F74 }, + { "America/Eirunepe" , 0x00832C }, + { "America/El_Salvador" , 0x008444 }, + { "America/Ensenada" , 0x0084B9 }, + { "America/Fort_Wayne" , 0x008960 }, + { "America/Fortaleza" , 0x008822 }, + { "America/Glace_Bay" , 0x008BCA }, + { "America/Godthab" , 0x008F41 }, + { "America/Goose_Bay" , 0x009205 }, + { "America/Grand_Turk" , 0x0096C2 }, + { "America/Grenada" , 0x009971 }, + { "America/Guadeloupe" , 0x0099C6 }, + { "America/Guatemala" , 0x009A1B }, + { "America/Guayaquil" , 0x009AA4 }, + { "America/Guyana" , 0x009B01 }, + { "America/Halifax" , 0x009B82 }, + { "America/Havana" , 0x00A098 }, + { "America/Hermosillo" , 0x00A40B }, + { "America/Indiana/Indianapolis" , 0x00A4E9 }, + { "America/Indiana/Knox" , 0x00A77A }, + { "America/Indiana/Marengo" , 0x00AB11 }, + { "America/Indiana/Petersburg" , 0x00ADB7 }, + { "America/Indiana/Tell_City" , 0x00B304 }, + { "America/Indiana/Vevay" , 0x00B59D }, + { "America/Indiana/Vincennes" , 0x00B7D8 }, + { "America/Indiana/Winamac" , 0x00BA8C }, + { "America/Indianapolis" , 0x00B09A }, + { "America/Inuvik" , 0x00BD45 }, + { "America/Iqaluit" , 0x00C03C }, + { "America/Jamaica" , 0x00C35E }, + { "America/Jujuy" , 0x00C423 }, + { "America/Juneau" , 0x00C5CD }, + { "America/Kentucky/Louisville" , 0x00C94B }, + { "America/Kentucky/Monticello" , 0x00CD69 }, + { "America/Knox_IN" , 0x00D0EE }, + { "America/Kralendijk" , 0x00D45F }, + { "America/La_Paz" , 0x00D4C5 }, + { "America/Lima" , 0x00D52C }, + { "America/Los_Angeles" , 0x00D5D4 }, + { "America/Louisville" , 0x00D9E5 }, + { "America/Lower_Princes" , 0x00DDDA }, + { "America/Maceio" , 0x00DE40 }, + { "America/Managua" , 0x00DF7A }, + { "America/Manaus" , 0x00E02D }, + { "America/Marigot" , 0x00E12F }, + { "America/Martinique" , 0x00E184 }, + { "America/Matamoros" , 0x00E1F0 }, + { "America/Mazatlan" , 0x00E449 }, + { "America/Mendoza" , 0x00E6B6 }, + { "America/Menominee" , 0x00E86A }, + { "America/Merida" , 0x00EBEB }, + { "America/Metlakatla" , 0x00EE26 }, + { "America/Mexico_City" , 0x00EF60 }, + { "America/Miquelon" , 0x00F1DB }, + { "America/Moncton" , 0x00F44D }, + { "America/Monterrey" , 0x00F8E4 }, + { "America/Montevideo" , 0x00FB47 }, + { "America/Montreal" , 0x00FE59 }, + { "America/Montserrat" , 0x010349 }, + { "America/Nassau" , 0x01039E }, + { "America/New_York" , 0x0106E3 }, + { "America/Nipigon" , 0x010BEE }, + { "America/Nome" , 0x010F3F }, + { "America/Noronha" , 0x0112BD }, + { "America/North_Dakota/Beulah" , 0x0113ED }, + { "America/North_Dakota/Center" , 0x011781 }, + { "America/North_Dakota/New_Salem" , 0x011B15 }, + { "America/Ojinaga" , 0x011EBE }, + { "America/Panama" , 0x01211F }, + { "America/Pangnirtung" , 0x012174 }, + { "America/Paramaribo" , 0x0124AA }, + { "America/Phoenix" , 0x01253C }, + { "America/Port-au-Prince" , 0x0125FA }, + { "America/Port_of_Spain" , 0x01291E }, + { "America/Porto_Acre" , 0x01281A }, + { "America/Porto_Velho" , 0x012973 }, + { "America/Puerto_Rico" , 0x012A69 }, + { "America/Rainy_River" , 0x012AD4 }, + { "America/Rankin_Inlet" , 0x012E0C }, + { "America/Recife" , 0x0130F2 }, + { "America/Regina" , 0x01321C }, + { "America/Resolute" , 0x0133DA }, + { "America/Rio_Branco" , 0x0136CB }, + { "America/Rosario" , 0x0137D3 }, + { "America/Santa_Isabel" , 0x013979 }, + { "America/Santarem" , 0x013D1C }, + { "America/Santiago" , 0x013E21 }, + { "America/Santo_Domingo" , 0x0141CA }, + { "America/Sao_Paulo" , 0x014290 }, + { "America/Scoresbysund" , 0x01459F }, + { "America/Shiprock" , 0x01488D }, + { "America/Sitka" , 0x014C06 }, + { "America/St_Barthelemy" , 0x014F8E }, + { "America/St_Johns" , 0x014FE3 }, + { "America/St_Kitts" , 0x015536 }, + { "America/St_Lucia" , 0x01558B }, + { "America/St_Thomas" , 0x0155E0 }, + { "America/St_Vincent" , 0x015635 }, + { "America/Swift_Current" , 0x01568A }, + { "America/Tegucigalpa" , 0x0157AB }, + { "America/Thule" , 0x01582A }, + { "America/Thunder_Bay" , 0x015A71 }, + { "America/Tijuana" , 0x015DBA }, + { "America/Toronto" , 0x016153 }, + { "America/Tortola" , 0x016673 }, + { "America/Vancouver" , 0x0166C8 }, + { "America/Virgin" , 0x016B05 }, + { "America/Whitehorse" , 0x016B5A }, + { "America/Winnipeg" , 0x016E77 }, + { "America/Yakutat" , 0x0172B7 }, + { "America/Yellowknife" , 0x017622 }, + { "Antarctica/Casey" , 0x017932 }, + { "Antarctica/Davis" , 0x0179CF }, + { "Antarctica/DumontDUrville" , 0x017A70 }, + { "Antarctica/Macquarie" , 0x017B02 }, + { "Antarctica/Mawson" , 0x017D49 }, + { "Antarctica/McMurdo" , 0x017DC5 }, + { "Antarctica/Palmer" , 0x018170 }, + { "Antarctica/Rothera" , 0x01848C }, + { "Antarctica/South_Pole" , 0x018502 }, + { "Antarctica/Syowa" , 0x018880 }, + { "Antarctica/Vostok" , 0x0188EE }, + { "Arctic/Longyearbyen" , 0x01895F }, + { "Asia/Aden" , 0x018C91 }, + { "Asia/Almaty" , 0x018CE6 }, + { "Asia/Amman" , 0x018E65 }, + { "Asia/Anadyr" , 0x019037 }, + { "Asia/Aqtau" , 0x01921C }, + { "Asia/Aqtobe" , 0x01941B }, + { "Asia/Ashgabat" , 0x0195D3 }, + { "Asia/Ashkhabad" , 0x0196F0 }, + { "Asia/Baghdad" , 0x01980D }, + { "Asia/Bahrain" , 0x019982 }, + { "Asia/Baku" , 0x0199E8 }, + { "Asia/Bangkok" , 0x019CD0 }, + { "Asia/Beirut" , 0x019D25 }, + { "Asia/Bishkek" , 0x01A032 }, + { "Asia/Brunei" , 0x01A1DE }, + { "Asia/Calcutta" , 0x01A240 }, + { "Asia/Choibalsan" , 0x01A2B9 }, + { "Asia/Chongqing" , 0x01A432 }, + { "Asia/Chungking" , 0x01A521 }, + { "Asia/Colombo" , 0x01A5D0 }, + { "Asia/Dacca" , 0x01A66C }, + { "Asia/Damascus" , 0x01A712 }, + { "Asia/Dhaka" , 0x01AA62 }, + { "Asia/Dili" , 0x01AB08 }, + { "Asia/Dubai" , 0x01AB92 }, + { "Asia/Dushanbe" , 0x01ABE7 }, + { "Asia/Gaza" , 0x01ACEA }, + { "Asia/Harbin" , 0x01B03D }, + { "Asia/Hebron" , 0x01B124 }, + { "Asia/Ho_Chi_Minh" , 0x01B480 }, + { "Asia/Hong_Kong" , 0x01B4F8 }, + { "Asia/Hovd" , 0x01B6BA }, + { "Asia/Irkutsk" , 0x01B832 }, + { "Asia/Istanbul" , 0x01BA18 }, + { "Asia/Jakarta" , 0x01BE05 }, + { "Asia/Jayapura" , 0x01BEAF }, + { "Asia/Jerusalem" , 0x01BF4B }, + { "Asia/Kabul" , 0x01C27A }, + { "Asia/Kamchatka" , 0x01C2CB }, + { "Asia/Karachi" , 0x01C4A7 }, + { "Asia/Kashgar" , 0x01C55C }, + { "Asia/Kathmandu" , 0x01C62D }, + { "Asia/Katmandu" , 0x01C693 }, + { "Asia/Khandyga" , 0x01C6F9 }, + { "Asia/Kolkata" , 0x01C91E }, + { "Asia/Krasnoyarsk" , 0x01C997 }, + { "Asia/Kuala_Lumpur" , 0x01CB7F }, + { "Asia/Kuching" , 0x01CC3C }, + { "Asia/Kuwait" , 0x01CD2A }, + { "Asia/Macao" , 0x01CD7F }, + { "Asia/Macau" , 0x01CEBA }, + { "Asia/Magadan" , 0x01CFF5 }, + { "Asia/Makassar" , 0x01D1D7 }, + { "Asia/Manila" , 0x01D29C }, + { "Asia/Muscat" , 0x01D321 }, + { "Asia/Nicosia" , 0x01D376 }, + { "Asia/Novokuznetsk" , 0x01D65E }, + { "Asia/Novosibirsk" , 0x01D860 }, + { "Asia/Omsk" , 0x01DA4B }, + { "Asia/Oral" , 0x01DC32 }, + { "Asia/Phnom_Penh" , 0x01DE02 }, + { "Asia/Pontianak" , 0x01DE7A }, + { "Asia/Pyongyang" , 0x01DF3C }, + { "Asia/Qatar" , 0x01DFA9 }, + { "Asia/Qyzylorda" , 0x01E00F }, + { "Asia/Rangoon" , 0x01E1E5 }, + { "Asia/Riyadh" , 0x01E25D }, + { "Asia/Saigon" , 0x01E2B2 }, + { "Asia/Sakhalin" , 0x01E32A }, + { "Asia/Samarkand" , 0x01E521 }, + { "Asia/Seoul" , 0x01E657 }, + { "Asia/Shanghai" , 0x01E6FB }, + { "Asia/Singapore" , 0x01E7DB }, + { "Asia/Taipei" , 0x01E892 }, + { "Asia/Tashkent" , 0x01E9AA }, + { "Asia/Tbilisi" , 0x01EADB }, + { "Asia/Tehran" , 0x01EC95 }, + { "Asia/Tel_Aviv" , 0x01EF03 }, + { "Asia/Thimbu" , 0x01F232 }, + { "Asia/Thimphu" , 0x01F298 }, + { "Asia/Tokyo" , 0x01F2FE }, + { "Asia/Ujung_Pandang" , 0x01F387 }, + { "Asia/Ulaanbaatar" , 0x01F404 }, + { "Asia/Ulan_Bator" , 0x01F55F }, + { "Asia/Urumqi" , 0x01F6AC }, + { "Asia/Ust-Nera" , 0x01F773 }, + { "Asia/Vientiane" , 0x01F978 }, + { "Asia/Vladivostok" , 0x01F9F0 }, + { "Asia/Yakutsk" , 0x01FBDC }, + { "Asia/Yekaterinburg" , 0x01FDC1 }, + { "Asia/Yerevan" , 0x01FFCC }, + { "Atlantic/Azores" , 0x0201CC }, + { "Atlantic/Bermuda" , 0x0206CF }, + { "Atlantic/Canary" , 0x0209B0 }, + { "Atlantic/Cape_Verde" , 0x020C86 }, + { "Atlantic/Faeroe" , 0x020CFF }, + { "Atlantic/Faroe" , 0x020FA3 }, + { "Atlantic/Jan_Mayen" , 0x021247 }, + { "Atlantic/Madeira" , 0x021579 }, + { "Atlantic/Reykjavik" , 0x021A82 }, + { "Atlantic/South_Georgia" , 0x021C3B }, + { "Atlantic/St_Helena" , 0x021E4D }, + { "Atlantic/Stanley" , 0x021C7F }, + { "Australia/ACT" , 0x021EA2 }, + { "Australia/Adelaide" , 0x0221BF }, + { "Australia/Brisbane" , 0x0224EB }, + { "Australia/Broken_Hill" , 0x0225B2 }, + { "Australia/Canberra" , 0x0228F0 }, + { "Australia/Currie" , 0x022C0D }, + { "Australia/Darwin" , 0x022F40 }, + { "Australia/Eucla" , 0x022FC6 }, + { "Australia/Hobart" , 0x02309B }, + { "Australia/LHI" , 0x0233F9 }, + { "Australia/Lindeman" , 0x023694 }, + { "Australia/Lord_Howe" , 0x023775 }, + { "Australia/Melbourne" , 0x023A20 }, + { "Australia/North" , 0x023D45 }, + { "Australia/NSW" , 0x023DB9 }, + { "Australia/Perth" , 0x0240D6 }, + { "Australia/Queensland" , 0x0241AE }, + { "Australia/South" , 0x02425A }, + { "Australia/Sydney" , 0x024577 }, + { "Australia/Tasmania" , 0x0248B4 }, + { "Australia/Victoria" , 0x024BF9 }, + { "Australia/West" , 0x024F16 }, + { "Australia/Yancowinna" , 0x024FCC }, + { "Brazil/Acre" , 0x0252EE }, + { "Brazil/DeNoronha" , 0x0253F2 }, + { "Brazil/East" , 0x025512 }, + { "Brazil/West" , 0x0257EF }, + { "Canada/Atlantic" , 0x0258E7 }, + { "Canada/Central" , 0x025DCF }, + { "Canada/East-Saskatchewan" , 0x0266D9 }, + { "Canada/Eastern" , 0x0261E9 }, + { "Canada/Mountain" , 0x026862 }, + { "Canada/Newfoundland" , 0x026BD8 }, + { "Canada/Pacific" , 0x027103 }, + { "Canada/Saskatchewan" , 0x02751C }, + { "Canada/Yukon" , 0x0276A5 }, + { "CET" , 0x0279A8 }, + { "Chile/Continental" , 0x027CB1 }, + { "Chile/EasterIsland" , 0x02804C }, + { "CST6CDT" , 0x02838E }, + { "Cuba" , 0x0286DF }, + { "EET" , 0x028A52 }, + { "Egypt" , 0x028D05 }, + { "Eire" , 0x028FC8 }, + { "EST" , 0x0294D9 }, + { "EST5EDT" , 0x02951D }, + { "Etc/GMT" , 0x02986E }, + { "Etc/GMT+0" , 0x02993A }, + { "Etc/GMT+1" , 0x0299C4 }, + { "Etc/GMT+10" , 0x029A51 }, + { "Etc/GMT+11" , 0x029ADF }, + { "Etc/GMT+12" , 0x029B6D }, + { "Etc/GMT+2" , 0x029C88 }, + { "Etc/GMT+3" , 0x029D14 }, + { "Etc/GMT+4" , 0x029DA0 }, + { "Etc/GMT+5" , 0x029E2C }, + { "Etc/GMT+6" , 0x029EB8 }, + { "Etc/GMT+7" , 0x029F44 }, + { "Etc/GMT+8" , 0x029FD0 }, + { "Etc/GMT+9" , 0x02A05C }, + { "Etc/GMT-0" , 0x0298F6 }, + { "Etc/GMT-1" , 0x02997E }, + { "Etc/GMT-10" , 0x029A0A }, + { "Etc/GMT-11" , 0x029A98 }, + { "Etc/GMT-12" , 0x029B26 }, + { "Etc/GMT-13" , 0x029BB4 }, + { "Etc/GMT-14" , 0x029BFB }, + { "Etc/GMT-2" , 0x029C42 }, + { "Etc/GMT-3" , 0x029CCE }, + { "Etc/GMT-4" , 0x029D5A }, + { "Etc/GMT-5" , 0x029DE6 }, + { "Etc/GMT-6" , 0x029E72 }, + { "Etc/GMT-7" , 0x029EFE }, + { "Etc/GMT-8" , 0x029F8A }, + { "Etc/GMT-9" , 0x02A016 }, + { "Etc/GMT0" , 0x0298B2 }, + { "Etc/Greenwich" , 0x02A0A2 }, + { "Etc/UCT" , 0x02A0E6 }, + { "Etc/Universal" , 0x02A12A }, + { "Etc/UTC" , 0x02A16E }, + { "Etc/Zulu" , 0x02A1B2 }, + { "Europe/Amsterdam" , 0x02A1F6 }, + { "Europe/Andorra" , 0x02A634 }, + { "Europe/Athens" , 0x02A8B0 }, + { "Europe/Belfast" , 0x02ABF3 }, + { "Europe/Belgrade" , 0x02B12A }, + { "Europe/Berlin" , 0x02B3F3 }, + { "Europe/Bratislava" , 0x02B757 }, + { "Europe/Brussels" , 0x02BA89 }, + { "Europe/Bucharest" , 0x02BEC0 }, + { "Europe/Budapest" , 0x02C1EA }, + { "Europe/Busingen" , 0x02C55D }, + { "Europe/Chisinau" , 0x02C814 }, + { "Europe/Copenhagen" , 0x02CBA2 }, + { "Europe/Dublin" , 0x02CEAC }, + { "Europe/Gibraltar" , 0x02D3BD }, + { "Europe/Guernsey" , 0x02D814 }, + { "Europe/Helsinki" , 0x02DD4B }, + { "Europe/Isle_of_Man" , 0x02E001 }, + { "Europe/Istanbul" , 0x02E538 }, + { "Europe/Jersey" , 0x02E925 }, + { "Europe/Kaliningrad" , 0x02EE5C }, + { "Europe/Kiev" , 0x02F0C2 }, + { "Europe/Lisbon" , 0x02F3D9 }, + { "Europe/Ljubljana" , 0x02F8DD }, + { "Europe/London" , 0x02FBA6 }, + { "Europe/Luxembourg" , 0x0300DD }, + { "Europe/Madrid" , 0x030533 }, + { "Europe/Malta" , 0x0308F9 }, + { "Europe/Mariehamn" , 0x030CB2 }, + { "Europe/Minsk" , 0x030F68 }, + { "Europe/Monaco" , 0x031176 }, + { "Europe/Moscow" , 0x0315B1 }, + { "Europe/Nicosia" , 0x031802 }, + { "Europe/Oslo" , 0x031AEA }, + { "Europe/Paris" , 0x031E1C }, + { "Europe/Podgorica" , 0x032262 }, + { "Europe/Prague" , 0x03252B }, + { "Europe/Riga" , 0x03285D }, + { "Europe/Rome" , 0x032BA2 }, + { "Europe/Samara" , 0x032F65 }, + { "Europe/San_Marino" , 0x033198 }, + { "Europe/Sarajevo" , 0x03355B }, + { "Europe/Simferopol" , 0x033824 }, + { "Europe/Skopje" , 0x033B4F }, + { "Europe/Sofia" , 0x033E18 }, + { "Europe/Stockholm" , 0x034120 }, + { "Europe/Tallinn" , 0x0343CF }, + { "Europe/Tirane" , 0x034709 }, + { "Europe/Tiraspol" , 0x034A0F }, + { "Europe/Uzhgorod" , 0x034D9D }, + { "Europe/Vaduz" , 0x0350B4 }, + { "Europe/Vatican" , 0x035363 }, + { "Europe/Vienna" , 0x035726 }, + { "Europe/Vilnius" , 0x035A53 }, + { "Europe/Volgograd" , 0x035D92 }, + { "Europe/Warsaw" , 0x035F92 }, + { "Europe/Zagreb" , 0x036373 }, + { "Europe/Zaporozhye" , 0x03663C }, + { "Europe/Zurich" , 0x03697D }, + { "Factory" , 0x036C2C }, + { "GB" , 0x036C9D }, + { "GB-Eire" , 0x0371D4 }, + { "GMT" , 0x03770B }, + { "GMT+0" , 0x0377D7 }, + { "GMT-0" , 0x037793 }, + { "GMT0" , 0x03774F }, + { "Greenwich" , 0x03781B }, + { "Hongkong" , 0x03785F }, + { "HST" , 0x037A21 }, + { "Iceland" , 0x037A65 }, + { "Indian/Antananarivo" , 0x037C1E }, + { "Indian/Chagos" , 0x037C92 }, + { "Indian/Christmas" , 0x037CF4 }, + { "Indian/Cocos" , 0x037D38 }, + { "Indian/Comoro" , 0x037D7C }, + { "Indian/Kerguelen" , 0x037DD1 }, + { "Indian/Mahe" , 0x037E26 }, + { "Indian/Maldives" , 0x037E7B }, + { "Indian/Mauritius" , 0x037ED0 }, + { "Indian/Mayotte" , 0x037F46 }, + { "Indian/Reunion" , 0x037F9B }, + { "Iran" , 0x037FF0 }, + { "Israel" , 0x03825E }, + { "Jamaica" , 0x03858D }, + { "Japan" , 0x038652 }, + { "Kwajalein" , 0x0386DB }, + { "Libya" , 0x03873E }, + { "MET" , 0x038847 }, + { "Mexico/BajaNorte" , 0x038B50 }, + { "Mexico/BajaSur" , 0x038EB9 }, + { "Mexico/General" , 0x0390FE }, + { "MST" , 0x03935C }, + { "MST7MDT" , 0x0393A0 }, + { "Navajo" , 0x0396F1 }, + { "NZ" , 0x039A6A }, + { "NZ-CHAT" , 0x039DE8 }, + { "Pacific/Apia" , 0x03A0D0 }, + { "Pacific/Auckland" , 0x03A26C }, + { "Pacific/Chatham" , 0x03A5F8 }, + { "Pacific/Chuuk" , 0x03A8EF }, + { "Pacific/Easter" , 0x03A948 }, + { "Pacific/Efate" , 0x03ACA6 }, + { "Pacific/Enderbury" , 0x03AD6C }, + { "Pacific/Fakaofo" , 0x03ADDA }, + { "Pacific/Fiji" , 0x03AE2B }, + { "Pacific/Funafuti" , 0x03AFBE }, + { "Pacific/Galapagos" , 0x03B002 }, + { "Pacific/Gambier" , 0x03B07A }, + { "Pacific/Guadalcanal" , 0x03B0DF }, + { "Pacific/Guam" , 0x03B134 }, + { "Pacific/Honolulu" , 0x03B18A }, + { "Pacific/Johnston" , 0x03B201 }, + { "Pacific/Kiritimati" , 0x03B280 }, + { "Pacific/Kosrae" , 0x03B2EB }, + { "Pacific/Kwajalein" , 0x03B348 }, + { "Pacific/Majuro" , 0x03B3B4 }, + { "Pacific/Marquesas" , 0x03B413 }, + { "Pacific/Midway" , 0x03B47A }, + { "Pacific/Nauru" , 0x03B504 }, + { "Pacific/Niue" , 0x03B57C }, + { "Pacific/Norfolk" , 0x03B5DA }, + { "Pacific/Noumea" , 0x03B62F }, + { "Pacific/Pago_Pago" , 0x03B6BF }, + { "Pacific/Palau" , 0x03B748 }, + { "Pacific/Pitcairn" , 0x03B78C }, + { "Pacific/Pohnpei" , 0x03B7E1 }, + { "Pacific/Ponape" , 0x03B836 }, + { "Pacific/Port_Moresby" , 0x03B87B }, + { "Pacific/Rarotonga" , 0x03B8BF }, + { "Pacific/Saipan" , 0x03B99B }, + { "Pacific/Samoa" , 0x03B9FE }, + { "Pacific/Tahiti" , 0x03BA87 }, + { "Pacific/Tarawa" , 0x03BAEC }, + { "Pacific/Tongatapu" , 0x03BB40 }, + { "Pacific/Truk" , 0x03BBCC }, + { "Pacific/Wake" , 0x03BC11 }, + { "Pacific/Wallis" , 0x03BC61 }, + { "Pacific/Yap" , 0x03BCA5 }, + { "Poland" , 0x03BCEA }, + { "Portugal" , 0x03C0CB }, + { "PRC" , 0x03C5C7 }, + { "PST8PDT" , 0x03C678 }, + { "ROC" , 0x03C9C9 }, + { "ROK" , 0x03CAE1 }, + { "Singapore" , 0x03CB85 }, + { "Turkey" , 0x03CC3C }, + { "UCT" , 0x03D029 }, + { "Universal" , 0x03D06D }, + { "US/Alaska" , 0x03D0B1 }, + { "US/Aleutian" , 0x03D41A }, + { "US/Arizona" , 0x03D780 }, + { "US/Central" , 0x03D80E }, + { "US/East-Indiana" , 0x03E218 }, + { "US/Eastern" , 0x03DD19 }, + { "US/Hawaii" , 0x03E482 }, + { "US/Indiana-Starke" , 0x03E4F3 }, + { "US/Michigan" , 0x03E864 }, + { "US/Mountain" , 0x03EB9B }, + { "US/Pacific" , 0x03EF14 }, + { "US/Pacific-New" , 0x03F319 }, + { "US/Samoa" , 0x03F71E }, + { "UTC" , 0x03F7A7 }, + { "W-SU" , 0x03FA9E }, + { "WET" , 0x03F7EB }, + { "Zulu" , 0x03FCD8 }, }; /* This is a generated file, do not modify */ -const unsigned char timelib_timezone_db_data_builtin[261381] = { +const unsigned char timelib_timezone_db_data_builtin[261404] = { /* Africa/Abidjan */ @@ -758,7 +758,7 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { /* Africa/Casablanca */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0x51, 0xF9, 0x9C, +0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0x51, 0xF9, 0x9C, 0xC6, 0xFF, 0x14, 0x80, 0xC7, 0x58, 0xAC, 0x70, 0xC7, 0xD9, 0xED, 0x80, 0xD2, 0xA1, 0x32, 0xF0, 0xDB, 0x35, 0xA4, 0x00, 0xDB, 0xEE, 0x27, 0xF0, 0xFB, 0x25, 0x72, 0x40, 0xFB, 0xC2, 0xEF, 0x70, 0x08, 0x6B, 0x84, 0x80, 0x08, 0xC6, 0x6D, 0xF0, 0x0B, 0xE8, 0x0C, 0x00, 0x0C, 0x61, 0x47, 0xF0, @@ -767,32 +767,34 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { 0x4A, 0x23, 0x1A, 0x00, 0x4A, 0x8D, 0xD5, 0x70, 0x4B, 0xDC, 0xC0, 0x80, 0x4C, 0x5D, 0xE5, 0x70, 0x4D, 0x97, 0xB8, 0x80, 0x4E, 0x34, 0x8C, 0xF0, 0x4F, 0x9C, 0xA0, 0xA0, 0x50, 0x08, 0xBB, 0xA0, 0x50, 0x31, 0x9A, 0x20, 0x50, 0x67, 0xA7, 0xA0, 0x51, 0x7C, 0x82, 0xA0, 0x51, 0xD8, 0xCB, 0xA0, -0x52, 0x05, 0x9E, 0xA0, 0x52, 0x47, 0x89, 0xA0, 0x53, 0x5C, 0x64, 0xA0, 0x53, 0xAF, 0x73, 0x20, -0x53, 0xD7, 0x00, 0x20, 0x54, 0x27, 0x6B, 0xA0, 0x55, 0x3C, 0x46, 0xA0, 0x55, 0x82, 0x26, 0x20, -0x55, 0xA9, 0xB3, 0x20, 0x56, 0x07, 0x4D, 0xA0, 0x57, 0x1C, 0x28, 0xA0, 0x57, 0x56, 0x2A, 0xA0, -0x57, 0x7D, 0xB7, 0xA0, 0x57, 0xE7, 0x2F, 0xA0, 0x59, 0x05, 0x45, 0x20, 0x59, 0x28, 0xDD, 0xA0, -0x59, 0x50, 0x6A, 0xA0, 0x59, 0xC7, 0x11, 0xA0, 0x5A, 0xE5, 0x27, 0x20, 0x5A, 0xFB, 0x90, 0xA0, -0x5B, 0x23, 0x1D, 0xA0, 0x5B, 0xB0, 0x2E, 0x20, 0x5C, 0xC5, 0x09, 0x20, 0x5C, 0xCF, 0x95, 0x20, -0x5C, 0xF7, 0x22, 0x20, 0x5D, 0x90, 0x10, 0x20, 0x5E, 0xC9, 0xD5, 0x20, 0x5F, 0x6F, 0xF2, 0x20, -0x60, 0x9C, 0x88, 0x20, 0x61, 0x4F, 0xD4, 0x20, 0x62, 0x70, 0x8C, 0xA0, 0x63, 0x2F, 0xB6, 0x20, -0x64, 0x4D, 0xCB, 0xA0, 0x65, 0x0F, 0x98, 0x20, 0x66, 0x2D, 0xAD, 0xA0, 0x66, 0xF8, 0xB4, 0xA0, -0x68, 0x0D, 0x8F, 0xA0, 0x68, 0xD8, 0x96, 0xA0, 0x69, 0xED, 0x71, 0xA0, 0x6A, 0xB8, 0x78, 0xA0, -0x6B, 0xCD, 0x53, 0xA0, 0x6C, 0x98, 0x5A, 0xA0, 0x6D, 0xB6, 0x70, 0x20, 0x6E, 0x78, 0x3C, 0xA0, -0x6F, 0x96, 0x52, 0x20, 0x70, 0x61, 0x59, 0x20, 0x71, 0x76, 0x34, 0x20, 0x72, 0x41, 0x3B, 0x20, -0x73, 0x56, 0x16, 0x20, 0x74, 0x21, 0x1D, 0x20, 0x75, 0x35, 0xF8, 0x20, 0x76, 0x00, 0xFF, 0x20, -0x77, 0x15, 0xDA, 0x20, 0x77, 0xE0, 0xE1, 0x20, 0x78, 0xFE, 0xF6, 0xA0, 0x79, 0xC0, 0xC3, 0x20, -0x7A, 0xDE, 0xD8, 0xA0, 0x7B, 0xA9, 0xDF, 0xA0, 0x7C, 0xBE, 0xBA, 0xA0, 0x7D, 0x89, 0xC1, 0xA0, -0x7E, 0x9E, 0x9C, 0xA0, 0x7F, 0x69, 0xA3, 0xA0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x52, 0x05, 0x9E, 0xA0, 0x52, 0x6C, 0x73, 0xA0, 0x53, 0x37, 0x7A, 0xA0, 0x53, 0xAF, 0x73, 0x20, +0x53, 0xD7, 0x00, 0x20, 0x54, 0x4C, 0x55, 0xA0, 0x55, 0x17, 0x5C, 0xA0, 0x55, 0x82, 0x26, 0x20, +0x55, 0xA9, 0xB3, 0x20, 0x56, 0x2C, 0x37, 0xA0, 0x56, 0xF7, 0x3E, 0xA0, 0x57, 0x56, 0x2A, 0xA0, +0x57, 0x7D, 0xB7, 0xA0, 0x58, 0x15, 0x54, 0x20, 0x58, 0xD7, 0x20, 0xA0, 0x59, 0x28, 0xDD, 0xA0, +0x59, 0x50, 0x6A, 0xA0, 0x59, 0xF5, 0x36, 0x20, 0x5A, 0xB7, 0x02, 0xA0, 0x5A, 0xFB, 0x90, 0xA0, +0x5B, 0x23, 0x1D, 0xA0, 0x5B, 0xD5, 0x18, 0x20, 0x5C, 0xA0, 0x1F, 0x20, 0x5C, 0xCF, 0x95, 0x20, +0x5C, 0xF7, 0x22, 0x20, 0x5D, 0xB4, 0xFA, 0x20, 0x5E, 0x80, 0x01, 0x20, 0x5E, 0xA2, 0x48, 0x20, +0x5E, 0xC9, 0xD5, 0x20, 0x5F, 0x94, 0xDC, 0x20, 0x60, 0x5F, 0xE3, 0x20, 0x60, 0x74, 0xFB, 0x20, +0x60, 0x9C, 0x88, 0x20, 0x61, 0x7D, 0xF8, 0xA0, 0x62, 0x3F, 0xC5, 0x20, 0x62, 0x48, 0xFF, 0xA0, +0x62, 0x70, 0x8C, 0xA0, 0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x43, 0x3F, 0xA0, 0x65, 0x3D, 0xBC, 0xA0, +0x66, 0x15, 0xF2, 0xA0, 0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xE9, 0xF7, 0x20, 0x68, 0xFD, 0x80, 0xA0, +0x69, 0xC8, 0x87, 0xA0, 0x6A, 0xDD, 0x62, 0xA0, 0x6B, 0xA8, 0x69, 0xA0, 0x6C, 0xC6, 0x7F, 0x20, +0x6D, 0x88, 0x4B, 0xA0, 0x6E, 0xA6, 0x61, 0x20, 0x6F, 0x68, 0x2D, 0xA0, 0x70, 0x86, 0x43, 0x20, +0x71, 0x51, 0x4A, 0x20, 0x72, 0x66, 0x25, 0x20, 0x73, 0x31, 0x2C, 0x20, 0x74, 0x46, 0x07, 0x20, +0x75, 0x11, 0x0E, 0x20, 0x76, 0x2F, 0x23, 0xA0, 0x76, 0xF0, 0xF0, 0x20, 0x78, 0x0F, 0x05, 0xA0, +0x78, 0xD0, 0xD2, 0x20, 0x79, 0xEE, 0xE7, 0xA0, 0x7A, 0xB0, 0xB4, 0x20, 0x7B, 0xCE, 0xC9, 0xA0, +0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA8, 0x14, 0x20, 0x7E, 0x79, 0xB2, 0xA0, 0x7F, 0x7C, 0x18, 0xA0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x03, 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, 0xF8, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x0E, -0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x4C, -0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0xAC, 0xC8, 0x01, 0x07, 0x16, 0x42, -0x00, 0x00, 0x00, 0x00, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xF8, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, +0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x4C, 0x4D, 0x54, +0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0xAC, 0xC8, 0x01, 0x07, 0x16, 0x42, 0x00, 0x00, +0x00, 0x00, /* Africa/Ceuta */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x45, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -890,12 +892,40 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { /* Africa/El_Aaiun */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x45, 0x48, 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, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xBC, 0x48, 0xF0, 0xE0, -0x0B, 0xD1, 0xB0, 0x90, 0x01, 0x02, 0xFF, 0xFF, 0xF3, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, -0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, -0x57, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0xC1, 0xB8, 0x00, 0xFE, -0x84, 0x40, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xBC, 0x48, 0xF0, 0xE0, +0x0B, 0xD1, 0xB0, 0x90, 0x0B, 0xE8, 0x0C, 0x00, 0x0C, 0x61, 0x47, 0xF0, 0x0D, 0xC9, 0x3F, 0x80, +0x0E, 0x8E, 0xF2, 0x70, 0x0F, 0xD3, 0x51, 0x80, 0x10, 0x27, 0xA3, 0x70, 0x48, 0x41, 0xE6, 0x80, +0x48, 0xBB, 0x22, 0x70, 0x4A, 0x23, 0x1A, 0x00, 0x4A, 0x8D, 0xD5, 0x70, 0x4B, 0xDC, 0xC0, 0x80, +0x4C, 0x5D, 0xE5, 0x70, 0x4D, 0x97, 0xB8, 0x80, 0x4E, 0x34, 0x8C, 0xF0, 0x4F, 0x9C, 0xA0, 0xA0, +0x50, 0x08, 0xBB, 0xA0, 0x50, 0x31, 0x9A, 0x20, 0x50, 0x67, 0xA7, 0xA0, 0x51, 0x7C, 0x82, 0xA0, +0x51, 0xD8, 0xCB, 0xA0, 0x52, 0x05, 0x9E, 0xA0, 0x52, 0x6C, 0x73, 0xA0, 0x53, 0x37, 0x7A, 0xA0, +0x53, 0xAF, 0x73, 0x20, 0x53, 0xD7, 0x00, 0x20, 0x54, 0x4C, 0x55, 0xA0, 0x55, 0x17, 0x5C, 0xA0, +0x55, 0x82, 0x26, 0x20, 0x55, 0xA9, 0xB3, 0x20, 0x56, 0x2C, 0x37, 0xA0, 0x56, 0xF7, 0x3E, 0xA0, +0x57, 0x56, 0x2A, 0xA0, 0x57, 0x7D, 0xB7, 0xA0, 0x58, 0x15, 0x54, 0x20, 0x58, 0xD7, 0x20, 0xA0, +0x59, 0x28, 0xDD, 0xA0, 0x59, 0x50, 0x6A, 0xA0, 0x59, 0xF5, 0x36, 0x20, 0x5A, 0xB7, 0x02, 0xA0, +0x5A, 0xFB, 0x90, 0xA0, 0x5B, 0x23, 0x1D, 0xA0, 0x5B, 0xD5, 0x18, 0x20, 0x5C, 0xA0, 0x1F, 0x20, +0x5C, 0xCF, 0x95, 0x20, 0x5C, 0xF7, 0x22, 0x20, 0x5D, 0xB4, 0xFA, 0x20, 0x5E, 0x80, 0x01, 0x20, +0x5E, 0xA2, 0x48, 0x20, 0x5E, 0xC9, 0xD5, 0x20, 0x5F, 0x94, 0xDC, 0x20, 0x60, 0x5F, 0xE3, 0x20, +0x60, 0x74, 0xFB, 0x20, 0x60, 0x9C, 0x88, 0x20, 0x61, 0x7D, 0xF8, 0xA0, 0x62, 0x3F, 0xC5, 0x20, +0x62, 0x48, 0xFF, 0xA0, 0x62, 0x70, 0x8C, 0xA0, 0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x43, 0x3F, 0xA0, +0x65, 0x3D, 0xBC, 0xA0, 0x66, 0x15, 0xF2, 0xA0, 0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xE9, 0xF7, 0x20, +0x68, 0xFD, 0x80, 0xA0, 0x69, 0xC8, 0x87, 0xA0, 0x6A, 0xDD, 0x62, 0xA0, 0x6B, 0xA8, 0x69, 0xA0, +0x6C, 0xC6, 0x7F, 0x20, 0x6D, 0x88, 0x4B, 0xA0, 0x6E, 0xA6, 0x61, 0x20, 0x6F, 0x68, 0x2D, 0xA0, +0x70, 0x86, 0x43, 0x20, 0x71, 0x51, 0x4A, 0x20, 0x72, 0x66, 0x25, 0x20, 0x73, 0x31, 0x2C, 0x20, +0x74, 0x46, 0x07, 0x20, 0x75, 0x11, 0x0E, 0x20, 0x76, 0x2F, 0x23, 0xA0, 0x76, 0xF0, 0xF0, 0x20, +0x78, 0x0F, 0x05, 0xA0, 0x78, 0xD0, 0xD2, 0x20, 0x79, 0xEE, 0xE7, 0xA0, 0x7A, 0xB0, 0xB4, 0x20, +0x7B, 0xCE, 0xC9, 0xA0, 0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA8, 0x14, 0x20, 0x7E, 0x79, 0xB2, 0xA0, +0x7F, 0x7C, 0x18, 0xA0, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0xFF, 0xFF, +0xF3, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x57, 0x45, +0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xB2, 0xC1, 0xB8, 0x00, 0xFE, 0x84, 0x40, 0x00, 0x00, 0x00, 0x00, /* Africa/Freetown */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1181,7 +1211,7 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { /* Africa/Tripoli */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xA1, 0xF2, 0xC1, 0x24, +0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xA1, 0xF2, 0xC1, 0x24, 0xDD, 0xBB, 0xB1, 0x10, 0xDE, 0x23, 0xAD, 0x60, 0xE1, 0x78, 0xD2, 0x10, 0xE1, 0xE7, 0x65, 0xE0, 0xE5, 0x2F, 0x3F, 0x70, 0xE5, 0xA9, 0xCC, 0xE0, 0xEB, 0x4E, 0xC6, 0xF0, 0x16, 0x92, 0x42, 0x60, 0x17, 0x08, 0xF7, 0x70, 0x17, 0xFA, 0x2B, 0xE0, 0x18, 0xEA, 0x2A, 0xF0, 0x19, 0xDB, 0x5F, 0x60, @@ -1189,24 +1219,9 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { 0x1E, 0x93, 0x0B, 0x70, 0x1F, 0x82, 0xEE, 0x60, 0x20, 0x70, 0x4A, 0x70, 0x21, 0x61, 0x7E, 0xE0, 0x22, 0x52, 0xCF, 0x70, 0x23, 0x44, 0x03, 0xE0, 0x24, 0x34, 0x02, 0xF0, 0x25, 0x25, 0x37, 0x60, 0x26, 0x40, 0xB7, 0xF0, 0x32, 0x4E, 0xF1, 0x60, 0x33, 0x44, 0x36, 0x70, 0x34, 0x35, 0x6A, 0xE0, -0x50, 0x9D, 0x99, 0x00, 0x51, 0x54, 0xD9, 0x80, 0x52, 0x69, 0xB4, 0x80, 0x53, 0x34, 0xBB, 0x80, -0x54, 0x52, 0xD1, 0x00, 0x55, 0x14, 0x9D, 0x80, 0x56, 0x32, 0xB3, 0x00, 0x56, 0xF4, 0x7F, 0x80, -0x58, 0x12, 0x95, 0x00, 0x58, 0xDD, 0x9C, 0x00, 0x59, 0xF2, 0x77, 0x00, 0x5A, 0xBD, 0x7E, 0x00, -0x5B, 0xD2, 0x59, 0x00, 0x5C, 0x9D, 0x60, 0x00, 0x5D, 0xB2, 0x3B, 0x00, 0x5E, 0x7D, 0x42, 0x00, -0x5F, 0x9B, 0x57, 0x80, 0x60, 0x5D, 0x24, 0x00, 0x61, 0x7B, 0x39, 0x80, 0x62, 0x3D, 0x06, 0x00, -0x63, 0x5B, 0x1B, 0x80, 0x64, 0x26, 0x22, 0x80, 0x65, 0x3A, 0xFD, 0x80, 0x66, 0x06, 0x04, 0x80, -0x67, 0x1A, 0xDF, 0x80, 0x67, 0xE5, 0xE6, 0x80, 0x69, 0x03, 0xFC, 0x00, 0x69, 0xC5, 0xC8, 0x80, -0x6A, 0xE3, 0xDE, 0x00, 0x6B, 0xA5, 0xAA, 0x80, 0x6C, 0xC3, 0xC0, 0x00, 0x6D, 0x8E, 0xC7, 0x00, -0x6E, 0xA3, 0xA2, 0x00, 0x6F, 0x6E, 0xA9, 0x00, 0x70, 0x83, 0x84, 0x00, 0x71, 0x4E, 0x8B, 0x00, -0x72, 0x63, 0x66, 0x00, 0x73, 0x2E, 0x6D, 0x00, 0x74, 0x4C, 0x82, 0x80, 0x75, 0x0E, 0x4F, 0x00, -0x76, 0x2C, 0x64, 0x80, 0x76, 0xEE, 0x31, 0x00, 0x78, 0x0C, 0x46, 0x80, 0x78, 0xD7, 0x4D, 0x80, -0x79, 0xEC, 0x28, 0x80, 0x7A, 0xB7, 0x2F, 0x80, 0x7B, 0xCC, 0x0A, 0x80, 0x7C, 0x97, 0x11, 0x80, -0x7D, 0xB5, 0x27, 0x00, 0x7E, 0x76, 0xF3, 0x80, 0x7F, 0x95, 0x09, 0x00, 0x02, 0x01, 0x02, 0x01, +0x50, 0x9D, 0x99, 0x00, 0x51, 0x54, 0xD9, 0x80, 0x52, 0x69, 0xB4, 0x80, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x03, 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, 0x00, 0x00, 0x0C, 0x5C, +0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x03, 0x02, 0x01, 0x03, 0x00, 0x00, 0x0C, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x87, @@ -2944,7 +2959,7 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { /* America/Eirunepe */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0xAA, 0x88, 0x80, +0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0xAA, 0x88, 0x80, 0xB8, 0x0F, 0x66, 0x00, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xF1, 0x50, 0x50, 0xBA, 0xDE, 0x90, 0x40, 0xDA, 0x38, 0xCA, 0x50, 0xDA, 0xEC, 0x16, 0x50, 0xDC, 0x19, 0xFD, 0xD0, 0xDC, 0xB9, 0x75, 0x40, 0xDD, 0xFB, 0x31, 0x50, 0xDE, 0x9B, 0xFA, 0x40, 0xDF, 0xDD, 0xB6, 0x50, 0xE0, 0x54, 0x4F, 0x40, @@ -2952,14 +2967,14 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { 0xF8, 0x51, 0x48, 0x50, 0xF8, 0xC7, 0xE1, 0x40, 0xFA, 0x0A, 0xEE, 0xD0, 0xFA, 0xA9, 0x14, 0xC0, 0xFB, 0xEC, 0x22, 0x50, 0xFC, 0x8B, 0x99, 0xC0, 0x1D, 0xC9, 0xAA, 0x50, 0x1E, 0x78, 0xF3, 0xC0, 0x1F, 0xA0, 0x51, 0xD0, 0x20, 0x33, 0xEB, 0xC0, 0x21, 0x81, 0x85, 0x50, 0x22, 0x0B, 0xE4, 0xC0, -0x2C, 0xC0, 0xD1, 0x50, 0x2D, 0x66, 0xE0, 0x40, 0x48, 0x60, 0x7F, 0x50, 0x02, 0x01, 0x02, 0x01, +0x2C, 0xC0, 0xD1, 0x50, 0x2D, 0x66, 0xE0, 0x40, 0x48, 0x60, 0x7F, 0x50, 0x52, 0x7F, 0x04, 0xC0, 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, 0x03, 0xFF, 0xFF, 0xBE, 0x80, -0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x09, 0xFF, 0xFF, -0xC7, 0xC0, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x43, 0x53, 0x54, 0x00, 0x41, 0x43, 0x54, -0x00, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x28, -0x15, 0x00, 0xA8, 0x0C, 0xD5, 0x00, 0x00, 0x00, 0x0A, 0x57, 0x20, 0x41, 0x6D, 0x61, 0x7A, 0x6F, -0x6E, 0x61, 0x73, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, +0x02, 0xFF, 0xFF, 0xBE, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, +0xB0, 0x00, 0x09, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x43, 0x53, +0x54, 0x00, 0x41, 0x43, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x7F, 0x28, 0x15, 0x00, 0xA8, 0x0C, 0xD5, 0x00, 0x00, 0x00, 0x0A, 0x57, 0x20, +0x41, 0x6D, 0x61, 0x7A, 0x6F, 0x6E, 0x61, 0x73, /* America/El_Salvador */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -5769,7 +5784,7 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { /* America/Porto_Acre */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0xAA, 0x86, 0x90, +0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0xAA, 0x86, 0x90, 0xB8, 0x0F, 0x66, 0x00, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xF1, 0x50, 0x50, 0xBA, 0xDE, 0x90, 0x40, 0xDA, 0x38, 0xCA, 0x50, 0xDA, 0xEC, 0x16, 0x50, 0xDC, 0x19, 0xFD, 0xD0, 0xDC, 0xB9, 0x75, 0x40, 0xDD, 0xFB, 0x31, 0x50, 0xDE, 0x9B, 0xFA, 0x40, 0xDF, 0xDD, 0xB6, 0x50, 0xE0, 0x54, 0x4F, 0x40, @@ -5777,12 +5792,13 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { 0xF8, 0x51, 0x48, 0x50, 0xF8, 0xC7, 0xE1, 0x40, 0xFA, 0x0A, 0xEE, 0xD0, 0xFA, 0xA9, 0x14, 0xC0, 0xFB, 0xEC, 0x22, 0x50, 0xFC, 0x8B, 0x99, 0xC0, 0x1D, 0xC9, 0xAA, 0x50, 0x1E, 0x78, 0xF3, 0xC0, 0x1F, 0xA0, 0x51, 0xD0, 0x20, 0x33, 0xEB, 0xC0, 0x21, 0x81, 0x85, 0x50, 0x22, 0x0B, 0xE4, 0xC0, -0x48, 0x60, 0x7F, 0x50, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x48, 0x60, 0x7F, 0x50, 0x52, 0x7F, 0x04, 0xC0, 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, 0x03, 0xFF, 0xFF, 0xC0, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, -0xB9, 0xB0, 0x00, 0x09, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x43, -0x53, 0x54, 0x00, 0x41, 0x43, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0xFF, 0xFF, 0xC0, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xC7, +0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x09, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x4C, +0x4D, 0x54, 0x00, 0x41, 0x43, 0x53, 0x54, 0x00, 0x41, 0x43, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* America/Port_of_Spain */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -6026,7 +6042,7 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { /* America/Rio_Branco */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0xAA, 0x86, 0x90, +0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0xAA, 0x86, 0x90, 0xB8, 0x0F, 0x66, 0x00, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xF1, 0x50, 0x50, 0xBA, 0xDE, 0x90, 0x40, 0xDA, 0x38, 0xCA, 0x50, 0xDA, 0xEC, 0x16, 0x50, 0xDC, 0x19, 0xFD, 0xD0, 0xDC, 0xB9, 0x75, 0x40, 0xDD, 0xFB, 0x31, 0x50, 0xDE, 0x9B, 0xFA, 0x40, 0xDF, 0xDD, 0xB6, 0x50, 0xE0, 0x54, 0x4F, 0x40, @@ -6034,13 +6050,13 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { 0xF8, 0x51, 0x48, 0x50, 0xF8, 0xC7, 0xE1, 0x40, 0xFA, 0x0A, 0xEE, 0xD0, 0xFA, 0xA9, 0x14, 0xC0, 0xFB, 0xEC, 0x22, 0x50, 0xFC, 0x8B, 0x99, 0xC0, 0x1D, 0xC9, 0xAA, 0x50, 0x1E, 0x78, 0xF3, 0xC0, 0x1F, 0xA0, 0x51, 0xD0, 0x20, 0x33, 0xEB, 0xC0, 0x21, 0x81, 0x85, 0x50, 0x22, 0x0B, 0xE4, 0xC0, -0x48, 0x60, 0x7F, 0x50, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x48, 0x60, 0x7F, 0x50, 0x52, 0x7F, 0x04, 0xC0, 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, 0x03, 0xFF, 0xFF, 0xC0, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, -0xB9, 0xB0, 0x00, 0x09, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x43, -0x53, 0x54, 0x00, 0x41, 0x43, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x7A, 0x1F, 0x05, 0x00, 0xAB, 0x34, 0x20, 0x00, 0x00, 0x00, 0x04, 0x41, -0x63, 0x72, 0x65, +0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0xFF, 0xFF, 0xC0, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xC7, +0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x09, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x4C, +0x4D, 0x54, 0x00, 0x41, 0x43, 0x53, 0x54, 0x00, 0x41, 0x43, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x1F, 0x05, 0x00, 0xAB, 0x34, 0x20, +0x00, 0x00, 0x00, 0x04, 0x41, 0x63, 0x72, 0x65, /* America/Rosario */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -10994,7 +11010,7 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { /* Brazil/Acre */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0xAA, 0x86, 0x90, +0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0xAA, 0x86, 0x90, 0xB8, 0x0F, 0x66, 0x00, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xF1, 0x50, 0x50, 0xBA, 0xDE, 0x90, 0x40, 0xDA, 0x38, 0xCA, 0x50, 0xDA, 0xEC, 0x16, 0x50, 0xDC, 0x19, 0xFD, 0xD0, 0xDC, 0xB9, 0x75, 0x40, 0xDD, 0xFB, 0x31, 0x50, 0xDE, 0x9B, 0xFA, 0x40, 0xDF, 0xDD, 0xB6, 0x50, 0xE0, 0x54, 0x4F, 0x40, @@ -11002,12 +11018,13 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { 0xF8, 0x51, 0x48, 0x50, 0xF8, 0xC7, 0xE1, 0x40, 0xFA, 0x0A, 0xEE, 0xD0, 0xFA, 0xA9, 0x14, 0xC0, 0xFB, 0xEC, 0x22, 0x50, 0xFC, 0x8B, 0x99, 0xC0, 0x1D, 0xC9, 0xAA, 0x50, 0x1E, 0x78, 0xF3, 0xC0, 0x1F, 0xA0, 0x51, 0xD0, 0x20, 0x33, 0xEB, 0xC0, 0x21, 0x81, 0x85, 0x50, 0x22, 0x0B, 0xE4, 0xC0, -0x48, 0x60, 0x7F, 0x50, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x48, 0x60, 0x7F, 0x50, 0x52, 0x7F, 0x04, 0xC0, 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, 0x03, 0xFF, 0xFF, 0xC0, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, -0xB9, 0xB0, 0x00, 0x09, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x43, -0x53, 0x54, 0x00, 0x41, 0x43, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0xFF, 0xFF, 0xC0, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xC7, +0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x09, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x4C, +0x4D, 0x54, 0x00, 0x41, 0x43, 0x53, 0x54, 0x00, 0x41, 0x43, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Brazil/DeNoronha */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -16301,7 +16318,7 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { /* Libya */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xA1, 0xF2, 0xC1, 0x24, +0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xA1, 0xF2, 0xC1, 0x24, 0xDD, 0xBB, 0xB1, 0x10, 0xDE, 0x23, 0xAD, 0x60, 0xE1, 0x78, 0xD2, 0x10, 0xE1, 0xE7, 0x65, 0xE0, 0xE5, 0x2F, 0x3F, 0x70, 0xE5, 0xA9, 0xCC, 0xE0, 0xEB, 0x4E, 0xC6, 0xF0, 0x16, 0x92, 0x42, 0x60, 0x17, 0x08, 0xF7, 0x70, 0x17, 0xFA, 0x2B, 0xE0, 0x18, 0xEA, 0x2A, 0xF0, 0x19, 0xDB, 0x5F, 0x60, @@ -16309,24 +16326,9 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { 0x1E, 0x93, 0x0B, 0x70, 0x1F, 0x82, 0xEE, 0x60, 0x20, 0x70, 0x4A, 0x70, 0x21, 0x61, 0x7E, 0xE0, 0x22, 0x52, 0xCF, 0x70, 0x23, 0x44, 0x03, 0xE0, 0x24, 0x34, 0x02, 0xF0, 0x25, 0x25, 0x37, 0x60, 0x26, 0x40, 0xB7, 0xF0, 0x32, 0x4E, 0xF1, 0x60, 0x33, 0x44, 0x36, 0x70, 0x34, 0x35, 0x6A, 0xE0, -0x50, 0x9D, 0x99, 0x00, 0x51, 0x54, 0xD9, 0x80, 0x52, 0x69, 0xB4, 0x80, 0x53, 0x34, 0xBB, 0x80, -0x54, 0x52, 0xD1, 0x00, 0x55, 0x14, 0x9D, 0x80, 0x56, 0x32, 0xB3, 0x00, 0x56, 0xF4, 0x7F, 0x80, -0x58, 0x12, 0x95, 0x00, 0x58, 0xDD, 0x9C, 0x00, 0x59, 0xF2, 0x77, 0x00, 0x5A, 0xBD, 0x7E, 0x00, -0x5B, 0xD2, 0x59, 0x00, 0x5C, 0x9D, 0x60, 0x00, 0x5D, 0xB2, 0x3B, 0x00, 0x5E, 0x7D, 0x42, 0x00, -0x5F, 0x9B, 0x57, 0x80, 0x60, 0x5D, 0x24, 0x00, 0x61, 0x7B, 0x39, 0x80, 0x62, 0x3D, 0x06, 0x00, -0x63, 0x5B, 0x1B, 0x80, 0x64, 0x26, 0x22, 0x80, 0x65, 0x3A, 0xFD, 0x80, 0x66, 0x06, 0x04, 0x80, -0x67, 0x1A, 0xDF, 0x80, 0x67, 0xE5, 0xE6, 0x80, 0x69, 0x03, 0xFC, 0x00, 0x69, 0xC5, 0xC8, 0x80, -0x6A, 0xE3, 0xDE, 0x00, 0x6B, 0xA5, 0xAA, 0x80, 0x6C, 0xC3, 0xC0, 0x00, 0x6D, 0x8E, 0xC7, 0x00, -0x6E, 0xA3, 0xA2, 0x00, 0x6F, 0x6E, 0xA9, 0x00, 0x70, 0x83, 0x84, 0x00, 0x71, 0x4E, 0x8B, 0x00, -0x72, 0x63, 0x66, 0x00, 0x73, 0x2E, 0x6D, 0x00, 0x74, 0x4C, 0x82, 0x80, 0x75, 0x0E, 0x4F, 0x00, -0x76, 0x2C, 0x64, 0x80, 0x76, 0xEE, 0x31, 0x00, 0x78, 0x0C, 0x46, 0x80, 0x78, 0xD7, 0x4D, 0x80, -0x79, 0xEC, 0x28, 0x80, 0x7A, 0xB7, 0x2F, 0x80, 0x7B, 0xCC, 0x0A, 0x80, 0x7C, 0x97, 0x11, 0x80, -0x7D, 0xB5, 0x27, 0x00, 0x7E, 0x76, 0xF3, 0x80, 0x7F, 0x95, 0x09, 0x00, 0x02, 0x01, 0x02, 0x01, +0x50, 0x9D, 0x99, 0x00, 0x51, 0x54, 0xD9, 0x80, 0x52, 0x69, 0xB4, 0x80, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x03, 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, 0x00, 0x00, 0x0C, 0x5C, +0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x03, 0x02, 0x01, 0x03, 0x00, 0x00, 0x0C, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, @@ -18400,4 +18402,4 @@ const unsigned char timelib_timezone_db_data_builtin[261381] = { 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 = { "2013.6", 579, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; +const timelib_tzdb timezonedb_builtin = { "2013.8", 579, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 7d3d1d739..13a645117 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -1406,6 +1406,7 @@ PHPAPI signed long php_parse_date(char *string, signed long *now) parsed_time = timelib_strtotime(string, strlen(string), &error, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper); if (error->error_count) { + timelib_time_dtor(parsed_time); timelib_error_container_dtor(error); return -1; } diff --git a/ext/dba/dba.c b/ext/dba/dba.c index 50a94dd2a..ced90f0c6 100644 --- a/ext/dba/dba.c +++ b/ext/dba/dba.c @@ -625,7 +625,8 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent) char *file_mode; char mode[4], *pmode, *lock_file_mode = NULL; int persistent_flag = persistent ? STREAM_OPEN_PERSISTENT : 0; - char *opened_path, *lock_name; + char *opened_path = NULL; + char *lock_name; if(ac < 2) { WRONG_PARAM_COUNT; @@ -848,8 +849,10 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent) if (!persistent) { info->lock.name = opened_path; } else { - info->lock.name = pestrdup(opened_path, persistent); - efree(opened_path); + if (opened_path) { + info->lock.name = pestrdup(opened_path, persistent); + efree(opened_path); + } } } } diff --git a/ext/exif/exif.c b/ext/exif/exif.c index bd646d9ad..2fe54f7b3 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -2643,6 +2643,7 @@ static int exif_process_user_comment(image_info_type *ImageInfo, char **pszInfoP } else { decode = ImageInfo->decode_unicode_le; } + /* XXX this will fail again if encoding_converter returns on error something different than SIZE_MAX */ if (zend_multibyte_encoding_converter( (unsigned char**)pszInfoPtr, &len, @@ -2650,7 +2651,7 @@ static int exif_process_user_comment(image_info_type *ImageInfo, char **pszInfoP ByteCount, zend_multibyte_fetch_encoding(ImageInfo->encode_unicode TSRMLS_CC), zend_multibyte_fetch_encoding(decode TSRMLS_CC) - TSRMLS_CC) < 0) { + TSRMLS_CC) == (size_t)-1) { len = exif_process_string_raw(pszInfoPtr, szValuePtr, ByteCount); } return len; @@ -2663,6 +2664,7 @@ static int exif_process_user_comment(image_info_type *ImageInfo, char **pszInfoP *pszEncoding = estrdup((const char*)szValuePtr); szValuePtr = szValuePtr+8; ByteCount -= 8; + /* XXX this will fail again if encoding_converter returns on error something different than SIZE_MAX */ if (zend_multibyte_encoding_converter( (unsigned char**)pszInfoPtr, &len, @@ -2670,7 +2672,7 @@ static int exif_process_user_comment(image_info_type *ImageInfo, char **pszInfoP ByteCount, zend_multibyte_fetch_encoding(ImageInfo->encode_jis TSRMLS_CC), zend_multibyte_fetch_encoding(ImageInfo->motorola_intel ? ImageInfo->decode_jis_be : ImageInfo->decode_jis_le TSRMLS_CC) - TSRMLS_CC) < 0) { + TSRMLS_CC) == (size_t)-1) { len = exif_process_string_raw(pszInfoPtr, szValuePtr, ByteCount); } return len; @@ -2700,8 +2702,8 @@ static int exif_process_user_comment(image_info_type *ImageInfo, char **pszInfoP static int exif_process_unicode(image_info_type *ImageInfo, xp_field_type *xp_field, int tag, char *szValuePtr, int ByteCount TSRMLS_DC) { xp_field->tag = tag; - - /* Copy the comment */ + + /* XXX this will fail again if encoding_converter returns on error something different than SIZE_MAX */ if (zend_multibyte_encoding_converter( (unsigned char**)&xp_field->value, &xp_field->size, @@ -2709,7 +2711,7 @@ static int exif_process_unicode(image_info_type *ImageInfo, xp_field_type *xp_fi ByteCount, zend_multibyte_fetch_encoding(ImageInfo->encode_unicode TSRMLS_CC), zend_multibyte_fetch_encoding(ImageInfo->motorola_intel ? ImageInfo->decode_unicode_be : ImageInfo->decode_unicode_le TSRMLS_CC) - TSRMLS_CC) < 0) { + TSRMLS_CC) == (size_t)-1) { xp_field->size = exif_process_string_raw(&xp_field->value, szValuePtr, ByteCount); } return xp_field->size; diff --git a/ext/exif/tests/bug62523_1.jpg b/ext/exif/tests/bug62523_1.jpg new file mode 100644 index 000000000..9a63d1e84 --- /dev/null +++ b/ext/exif/tests/bug62523_1.jpg @@ -0,0 +1,9 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> +<html><head> +<title>301 Moved Permanently</title> +</head><body> +<h1>Moved Permanently</h1> +<p>The document has moved <a href="http://www.getid3.org/temp/62523.jpg">here</a>.</p> +<hr> +<address>Apache Server at getid3.org Port 80</address> +</body></html> diff --git a/ext/exif/tests/bug62523_1.phpt b/ext/exif/tests/bug62523_1.phpt new file mode 100644 index 000000000..28d42f021 --- /dev/null +++ b/ext/exif/tests/bug62523_1.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug 62523 (php crashes with segfault when exif_read_data called) +--SKIPIF-- +<?php +extension_loaded("exif") or die("skip need exif"); +?> +--FILE-- +<?php +echo "Test\n"; +var_dump(count(exif_read_data(__DIR__."/bug62523_1.jpg"))); +?> +Done +--EXPECTF-- +Test + +Warning: exif_read_data(bug62523_1.jpg): File not supported in %sbug62523_1.php on line %d +int(1) +Done diff --git a/ext/exif/tests/bug62523_2.jpg b/ext/exif/tests/bug62523_2.jpg Binary files differnew file mode 100644 index 000000000..8d7fc6c5f --- /dev/null +++ b/ext/exif/tests/bug62523_2.jpg diff --git a/ext/exif/tests/bug62523_2.phpt b/ext/exif/tests/bug62523_2.phpt new file mode 100644 index 000000000..ddc8ae824 --- /dev/null +++ b/ext/exif/tests/bug62523_2.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug 62523 (php crashes with segfault when exif_read_data called) +--SKIPIF-- +<?php +extension_loaded("exif") or die("skip need exif"); +?> +--FILE-- +<?php +echo "Test\n"; +var_dump(count(exif_read_data(__DIR__."/bug62523_2.jpg"))); +?> +Done +--EXPECT-- +Test +int(76) +Done diff --git a/ext/exif/tests/bug62523_3.jpg b/ext/exif/tests/bug62523_3.jpg new file mode 100644 index 000000000..3ee91368c --- /dev/null +++ b/ext/exif/tests/bug62523_3.jpg @@ -0,0 +1,12 @@ +<html>
+ <head><title>Found</title></head>
+ <body>
+ <h1>Found</h1>
+ <p>The resource was found at <a href="http://dl.dropboxusercontent.com/u/7562584/Bugs/Php/bad_exif.jpeg">http://dl.dropboxusercontent.com/u/7562584/Bugs/Php/bad_exif.jpeg</a>;
+you should be redirected automatically.
+
+<!-- --></p>
+ <hr noshade>
+ <div align="right">WSGI Server</div>
+ </body>
+</html>
diff --git a/ext/exif/tests/bug62523_3.phpt b/ext/exif/tests/bug62523_3.phpt new file mode 100644 index 000000000..6e11354c5 --- /dev/null +++ b/ext/exif/tests/bug62523_3.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug 62523 (php crashes with segfault when exif_read_data called) +--SKIPIF-- +<?php +extension_loaded("exif") or die("skip need exif"); +?> +--FILE-- +<?php +echo "Test\n"; +var_dump(count(exif_read_data(__DIR__."/bug62523_3.jpg"))); +?> +Done +--EXPECTF-- +Test + +Warning: exif_read_data(bug62523_3.jpg): File not supported in %sbug62523_3.php on line %d +int(1) +Done diff --git a/ext/exif/tests/exif_encoding_crash.jpg b/ext/exif/tests/exif_encoding_crash.jpg Binary files differnew file mode 100644 index 000000000..55138abe5 --- /dev/null +++ b/ext/exif/tests/exif_encoding_crash.jpg diff --git a/ext/exif/tests/exif_encoding_crash.phpt b/ext/exif/tests/exif_encoding_crash.phpt new file mode 100644 index 000000000..1c4ad6386 --- /dev/null +++ b/ext/exif/tests/exif_encoding_crash.phpt @@ -0,0 +1,14 @@ +--TEST-- +PHP crash when zend_multibyte_encoding_converter returns (size_t)-1) +--SKIPIF-- +<?php if (!extension_loaded('exif')) print 'skip exif extension not available';?> +--FILE-- +<?php +$infile = dirname(__FILE__).'/exif_encoding_crash.jpg'; +$exif_data = exif_read_data($infile); +echo "*** no core dump ***\n"; +?> +===DONE=== +--EXPECT-- +*** no core dump *** +===DONE=== diff --git a/ext/filter/logical_filters.c b/ext/filter/logical_filters.c index 653cce23e..39433d6ec 100644 --- a/ext/filter/logical_filters.c +++ b/ext/filter/logical_filters.c @@ -714,7 +714,7 @@ void php_filter_validate_ip(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ if (flags & FILTER_FLAG_NO_RES_RANGE) { if ( (ip[0] == 0) || - (ip[0] == 100 && (ip[1] >= 64 || ip[1] <= 127)) || + (ip[0] == 100 && (ip[1] >= 64 && ip[1] <= 127)) || (ip[0] == 128 && ip[1] == 0) || (ip[0] == 191 && ip[1] == 255) || (ip[0] == 169 && ip[1] == 254) || diff --git a/ext/filter/tests/018.phpt b/ext/filter/tests/018.phpt index 9c73fc3cf..75bbd1342 100644 --- a/ext/filter/tests/018.phpt +++ b/ext/filter/tests/018.phpt @@ -15,7 +15,7 @@ var_dump(filter_var("192.168.0.1", FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE var_dump(filter_var("192.0.34.166", FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)); var_dump(filter_var("127.0.0.1", FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)); var_dump(filter_var("192.0.0.1", FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)); -var_dump(filter_var("100.0.0.0", FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)); +var_dump(filter_var("100.64.0.0", FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)); var_dump(filter_var("100.127.255.255", FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)); var_dump(filter_var("192.0.34.166", FILTER_VALIDATE_IP)); var_dump(filter_var("256.1237.123.1", FILTER_VALIDATE_IP)); diff --git a/ext/ftp/ftp.c b/ext/ftp/ftp.c index 2c5bc5d7e..30b3ba628 100644 --- a/ext/ftp/ftp.c +++ b/ext/ftp/ftp.c @@ -630,7 +630,7 @@ ftp_alloc(ftpbuf_t *ftp, const long size, char **response) return 0; } - if (response && ftp->inbuf) { + if (response) { *response = estrdup(ftp->inbuf); } @@ -1638,7 +1638,7 @@ ftp_genlist(ftpbuf_t *ftp, const char *cmd, const char *path TSRMLS_DC) if (ftp->resp == 226) { ftp->data = data_close(ftp, data); php_stream_close(tmpstream); - return ecalloc(1, sizeof(char**)); + return ecalloc(1, sizeof(char*)); } /* pull data buffer into tmpfile */ @@ -1666,11 +1666,11 @@ ftp_genlist(ftpbuf_t *ftp, const char *cmd, const char *path TSRMLS_DC) } } - ftp->data = data = data_close(ftp, data); + ftp->data = data_close(ftp, data); php_stream_rewind(tmpstream); - ret = safe_emalloc((lines + 1), sizeof(char**), size * sizeof(char*)); + ret = safe_emalloc((lines + 1), sizeof(char*), size); entry = ret; text = (char*) (ret + lines + 1); diff --git a/ext/ftp/tests/ftp_fget_basic1.phpt b/ext/ftp/tests/ftp_fget_basic1.phpt index 475f7183d..5909d35ce 100644 --- a/ext/ftp/tests/ftp_fget_basic1.phpt +++ b/ext/ftp/tests/ftp_fget_basic1.phpt @@ -16,7 +16,7 @@ ftp_login($ftp, 'user', 'pass'); if (!$ftp) die("Couldn't connect to the server"); ftp_set_option($ftp, FTP_AUTOSEEK, false); -$local_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . "localfile.txt"; +$local_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . "ftp_fget_basic1.txt"; $handle = fopen($local_file, 'w'); var_dump(ftp_fget($ftp, $handle, 'fget.txt', FTP_ASCII, FTP_AUTORESUME)); @@ -24,7 +24,7 @@ var_dump(file_get_contents($local_file)); ?> --CLEAN-- <?php -@unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . "localfile.txt"); +@unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . "ftp_fget_basic1.txt"); ?> --EXPECT-- bool(true) diff --git a/ext/ftp/tests/ftp_fget_basic2.phpt b/ext/ftp/tests/ftp_fget_basic2.phpt index 00a26752d..622cea368 100644 --- a/ext/ftp/tests/ftp_fget_basic2.phpt +++ b/ext/ftp/tests/ftp_fget_basic2.phpt @@ -15,7 +15,7 @@ $ftp = ftp_connect('127.0.0.1', $port); ftp_login($ftp, 'user', 'pass'); if (!$ftp) die("Couldn't connect to the server"); -$local_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . "localfile.txt"; +$local_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . "ftp_fget_basic2.txt"; file_put_contents($local_file, 'ASCIIFoo'); $handle = fopen($local_file, 'a'); @@ -24,7 +24,7 @@ var_dump(file_get_contents($local_file)); ?> --CLEAN-- <?php -@unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . "localfile.txt"); +@unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . "ftp_fget_basic2.txt"); ?> --EXPECT-- bool(true) diff --git a/ext/ftp/tests/ftp_fget_basic3.phpt b/ext/ftp/tests/ftp_fget_basic3.phpt index b7098701a..9485473b1 100644 --- a/ext/ftp/tests/ftp_fget_basic3.phpt +++ b/ext/ftp/tests/ftp_fget_basic3.phpt @@ -15,7 +15,7 @@ $ftp = ftp_connect('127.0.0.1', $port); ftp_login($ftp, 'user', 'pass'); if (!$ftp) die("Couldn't connect to the server"); -$local_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . "localfile.txt"; +$local_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . "ftp_fget_basic3.txt"; file_put_contents($local_file, 'ASCIIFoo'); $handle = fopen($local_file, 'a'); @@ -24,7 +24,7 @@ var_dump(file_get_contents($local_file)); ?> --CLEAN-- <?php -@unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . "localfile.txt"); +@unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . "ftp_fget_basic3.txt"); ?> --EXPECT-- bool(true) diff --git a/ext/ftp/tests/ftp_nb_fget_basic1.phpt b/ext/ftp/tests/ftp_nb_fget_basic1.phpt index cac4eec56..5e6389ff1 100644 --- a/ext/ftp/tests/ftp_nb_fget_basic1.phpt +++ b/ext/ftp/tests/ftp_nb_fget_basic1.phpt @@ -16,7 +16,7 @@ ftp_login($ftp, 'user', 'pass'); if (!$ftp) die("Couldn't connect to the server"); ftp_set_option($ftp, FTP_AUTOSEEK, false); -$local_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . "localfile.txt"; +$local_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . "ftp_nb_fget_basic1.txt"; $handle = fopen($local_file, 'w'); var_dump(ftp_nb_fget($ftp, $handle, 'fget.txt', FTP_ASCII, FTP_AUTORESUME)); @@ -24,7 +24,7 @@ var_dump(file_get_contents($local_file)); ?> --CLEAN-- <?php -@unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . "localfile.txt"); +@unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . "ftp_nb_fget_basic1.txt"); ?> --EXPECT-- int(2) diff --git a/ext/ftp/tests/ftp_nb_fget_basic2.phpt b/ext/ftp/tests/ftp_nb_fget_basic2.phpt index dc92f4e23..215b79ac4 100644 --- a/ext/ftp/tests/ftp_nb_fget_basic2.phpt +++ b/ext/ftp/tests/ftp_nb_fget_basic2.phpt @@ -15,7 +15,7 @@ $ftp = ftp_connect('127.0.0.1', $port); ftp_login($ftp, 'user', 'pass'); if (!$ftp) die("Couldn't connect to the server"); -$local_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . "localfile.txt"; +$local_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . "ftp_nb_fget_basic2.txt"; file_put_contents($local_file, 'ASCIIFoo'); $handle = fopen($local_file, 'a'); @@ -24,7 +24,7 @@ var_dump(file_get_contents($local_file)); ?> --CLEAN-- <?php -@unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . "localfile.txt"); +@unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . "ftp_nb_fget_basic2.txt"); ?> --EXPECT-- int(2) diff --git a/ext/ftp/tests/ftp_nb_fget_basic3.phpt b/ext/ftp/tests/ftp_nb_fget_basic3.phpt index d1a87c4f3..66daf2ba0 100644 --- a/ext/ftp/tests/ftp_nb_fget_basic3.phpt +++ b/ext/ftp/tests/ftp_nb_fget_basic3.phpt @@ -15,7 +15,7 @@ $ftp = ftp_connect('127.0.0.1', $port); ftp_login($ftp, 'user', 'pass'); if (!$ftp) die("Couldn't connect to the server"); -$local_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . "localfile.txt"; +$local_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . "ftp_nb_fget_basic3.txt"; file_put_contents($local_file, 'ASCIIFoo'); $handle = fopen($local_file, 'a'); @@ -24,7 +24,7 @@ var_dump(file_get_contents($local_file)); ?> --CLEAN-- <?php -@unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . "localfile.txt"); +@unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . "ftp_nb_fget_basic3.txt"); ?> --EXPECT-- int(2) diff --git a/ext/ftp/tests/ftp_nb_get_large.phpt b/ext/ftp/tests/ftp_nb_get_large.phpt index 3fbf2a483..0c354d7c1 100644 --- a/ext/ftp/tests/ftp_nb_get_large.phpt +++ b/ext/ftp/tests/ftp_nb_get_large.phpt @@ -18,7 +18,7 @@ $ftp = ftp_connect('127.0.0.1', $port); ftp_login($ftp, 'user', 'pass'); if (!$ftp) die("Couldn't connect to the server"); -$local_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . "localfile.txt"; +$local_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . "ftp_nb_get_large.txt"; touch($local_file); ftp_nb_get($ftp, $local_file, 'fget_large.txt', FTP_BINARY, 5368709119); $fp = fopen($local_file, 'r'); @@ -29,7 +29,7 @@ fclose($fp); ?> --CLEAN-- <?php -@unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . "localfile.txt"); +@unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . "ftp_nb_get_large.txt"); ?> --EXPECT-- string(1) "X" diff --git a/ext/gd/php_gd.h b/ext/gd/php_gd.h index 269c315e8..22fac40dd 100644 --- a/ext/gd/php_gd.h +++ b/ext/gd/php_gd.h @@ -59,7 +59,7 @@ PHPAPI extern const char php_sig_gif[3]; PHPAPI extern const char php_sig_jpg[3]; -PHPAPI extern const char php_sig_png[3]; +PHPAPI extern const char php_sig_png[8]; extern zend_module_entry gd_module_entry; #define phpext_gd_ptr &gd_module_entry diff --git a/ext/intl/collator/collator_create.c b/ext/intl/collator/collator_create.c index b2a8c7f6b..7ed4c5343 100644 --- a/ext/intl/collator/collator_create.c +++ b/ext/intl/collator/collator_create.c @@ -27,7 +27,7 @@ /* {{{ */ static void collator_ctor(INTERNAL_FUNCTION_PARAMETERS) { - char* locale; + const char* locale; int locale_len = 0; zval* object; Collator_object* co; diff --git a/ext/intl/dateformat/dateformat_parse.c b/ext/intl/dateformat/dateformat_parse.c index 4193e8901..993077854 100644 --- a/ext/intl/dateformat/dateformat_parse.c +++ b/ext/intl/dateformat/dateformat_parse.c @@ -62,7 +62,7 @@ static void internal_parse_to_timestamp(IntlDateFormatter_object *dfo, char* tex } /* }}} */ -static void add_to_localtime_arr( IntlDateFormatter_object *dfo, zval* return_value, UCalendar parsed_calendar, long calendar_field, char* key_name TSRMLS_DC) +static void add_to_localtime_arr( IntlDateFormatter_object *dfo, zval* return_value, const UCalendar *parsed_calendar, long calendar_field, char* key_name TSRMLS_DC) { long calendar_field_val = ucal_get( parsed_calendar, calendar_field, &INTL_DATA_ERROR_CODE(dfo)); INTL_METHOD_CHECK_STATUS( dfo, "Date parsing - localtime failed : could not get a field from calendar" ); @@ -83,7 +83,7 @@ static void add_to_localtime_arr( IntlDateFormatter_object *dfo, zval* return_va */ static void internal_parse_to_localtime(IntlDateFormatter_object *dfo, char* text_to_parse, int32_t text_len, int32_t *parse_pos, zval *return_value TSRMLS_DC) { - UCalendar* parsed_calendar = NULL; + UCalendar *parsed_calendar = NULL; UChar* text_utf16 = NULL; int32_t text_utf16_len = 0; long isInDST = 0; @@ -92,7 +92,7 @@ static void internal_parse_to_localtime(IntlDateFormatter_object *dfo, char* tex intl_convert_utf8_to_utf16(&text_utf16, &text_utf16_len, text_to_parse, text_len, &INTL_DATA_ERROR_CODE(dfo)); INTL_METHOD_CHECK_STATUS(dfo, "Error converting timezone to UTF-16" ); - parsed_calendar = udat_getCalendar(DATE_FORMAT_OBJECT(dfo)); + parsed_calendar = (UCalendar *)udat_getCalendar(DATE_FORMAT_OBJECT(dfo)); udat_parseCalendar( DATE_FORMAT_OBJECT(dfo), parsed_calendar, text_utf16, text_utf16_len, parse_pos, &INTL_DATA_ERROR_CODE(dfo)); if (text_utf16) { diff --git a/ext/intl/formatter/formatter_main.c b/ext/intl/formatter/formatter_main.c index d0671a88b..0a568472c 100644 --- a/ext/intl/formatter/formatter_main.c +++ b/ext/intl/formatter/formatter_main.c @@ -27,7 +27,7 @@ /* {{{ */ static void numfmt_ctor(INTERNAL_FUNCTION_PARAMETERS) { - char* locale; + const char* locale; char* pattern = NULL; int locale_len = 0, pattern_len = 0; long style; diff --git a/ext/intl/locale/locale_methods.c b/ext/intl/locale/locale_methods.c index d1a86d8ee..21b5847f2 100644 --- a/ext/intl/locale/locale_methods.c +++ b/ext/intl/locale/locale_methods.c @@ -121,12 +121,15 @@ static int16_t findOffset(const char* const* list, const char* key) } /*}}}*/ -static char* getPreferredTag(char* gf_tag) +static char* getPreferredTag(const char* gf_tag) { char* result = NULL; int grOffset = 0; grOffset = findOffset( LOC_GRANDFATHERED ,gf_tag); + if(grOffset < 0) { + return NULL; + } if( grOffset < LOC_PREFERRED_GRANDFATHERED_LEN ){ /* return preferred tag */ result = estrdup( LOC_PREFERRED_GRANDFATHERED[grOffset] ); @@ -172,7 +175,7 @@ static int getStrrtokenPos(char* str, int savedPos) * returns -1 if no singleton * strtok equivalent search for singleton */ -static int getSingletonPos(char* str) +static int getSingletonPos(const char* str) { int result =-1; int i=0; @@ -248,7 +251,7 @@ PHP_NAMED_FUNCTION(zif_locale_set_default) * common code shared by get_primary_language,get_script or get_region or get_variant * result = 0 if error, 1 if successful , -1 if no value */ -static char* get_icu_value_internal( char* loc_name , char* tag_name, int* result , int fromParseLocale) +static char* get_icu_value_internal( const char* loc_name , char* tag_name, int* result , int fromParseLocale) { char* tag_value = NULL; int32_t tag_value_len = 512; @@ -278,7 +281,7 @@ static char* get_icu_value_internal( char* loc_name , char* tag_name, int* resul /* Handle singletons */ if( strcmp(tag_name , LOC_LANG_TAG)==0 ){ if( strlen(loc_name)>1 && (isIDPrefix(loc_name) ==1 ) ){ - return loc_name; + return (char *)loc_name; } } @@ -367,7 +370,7 @@ static char* get_icu_value_internal( char* loc_name , char* tag_name, int* resul static void get_icu_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAMETERS) { - char* loc_name = NULL; + const char* loc_name = NULL; int loc_name_len = 0; char* tag_value = NULL; @@ -462,10 +465,10 @@ PHP_FUNCTION(locale_get_primary_language ) }}} */ static void get_icu_disp_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAMETERS) { - char* loc_name = NULL; + const char* loc_name = NULL; int loc_name_len = 0; - char* disp_loc_name = NULL; + const char* disp_loc_name = NULL; int disp_loc_name_len = 0; int free_loc_name = 0; @@ -558,7 +561,7 @@ static void get_icu_disp_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAME efree( mod_loc_name ); } if (free_loc_name) { - efree(disp_loc_name); + efree((void *)disp_loc_name); disp_loc_name = NULL; } RETURN_FALSE; @@ -569,7 +572,7 @@ static void get_icu_disp_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAME efree( mod_loc_name ); } if (free_loc_name) { - efree(disp_loc_name); + efree((void *)disp_loc_name); disp_loc_name = NULL; } /* Convert display locale name from UTF-16 to UTF-8. */ @@ -663,10 +666,10 @@ PHP_FUNCTION( locale_get_keywords ) UEnumeration* e = NULL; UErrorCode status = U_ZERO_ERROR; - const char* kw_key = NULL; + const char* kw_key = NULL; int32_t kw_key_len = 0; - char* loc_name = NULL; + const char* loc_name = NULL; int loc_name_len = 0; /* @@ -713,7 +716,7 @@ PHP_FUNCTION( locale_get_keywords ) kw_value = erealloc( kw_value , kw_value_len+1); } if (U_FAILURE(status)) { - intl_error_set( NULL, FAILURE, "locale_get_keywords: Error encountered while getting the keyword value for the keyword", 0 TSRMLS_CC ); + intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, "locale_get_keywords: Error encountered while getting the keyword value for the keyword", 0 TSRMLS_CC ); if( kw_value){ efree( kw_value ); } @@ -971,12 +974,12 @@ PHP_FUNCTION(locale_compose) * e.g. for locale='en_US-x-prv1-prv2-prv3' * returns a pointer to the string 'prv1-prv2-prv3' */ -static char* get_private_subtags(char* loc_name) +static char* get_private_subtags(const char* loc_name) { char* result =NULL; int singletonPos = 0; int len =0; - char* mod_loc_name =NULL; + const char* mod_loc_name =NULL; if( loc_name && (len = strlen(loc_name)>0 ) ){ mod_loc_name = loc_name ; @@ -1016,7 +1019,7 @@ static char* get_private_subtags(char* loc_name) /* {{{ code used by locale_parse */ -static int add_array_entry(char* loc_name, zval* hash_arr, char* key_name TSRMLS_DC) +static int add_array_entry(const char* loc_name, zval* hash_arr, char* key_name TSRMLS_DC) { char* key_value = NULL; char* cur_key_name = NULL; @@ -1081,7 +1084,7 @@ static int add_array_entry(char* loc_name, zval* hash_arr, char* key_name TSRMLS */ PHP_FUNCTION(locale_parse) { - char* loc_name = NULL; + const char* loc_name = NULL; int loc_name_len = 0; int grOffset = 0; @@ -1125,8 +1128,8 @@ PHP_FUNCTION(locale_parse) */ PHP_FUNCTION(locale_get_all_variants) { - char* loc_name = NULL; - int loc_name_len = 0; + const char* loc_name = NULL; + int loc_name_len = 0; int result = 0; char* token = NULL; @@ -1179,10 +1182,10 @@ PHP_FUNCTION(locale_get_all_variants) /*{{{ * Converts to lower case and also replaces all hyphens with the underscore */ -static int strToMatch(char* str ,char *retstr) +static int strToMatch(const char* str ,char *retstr) { char* anchor = NULL; - char* anchor1 = NULL; + const char* anchor1 = NULL; int result = 0; int len = 0; @@ -1222,7 +1225,7 @@ PHP_FUNCTION(locale_filter_matches) { char* lang_tag = NULL; int lang_tag_len = 0; - char* loc_range = NULL; + const char* loc_range = NULL; int loc_range_len = 0; int result = 0; @@ -1398,7 +1401,7 @@ static void array_cleanup( char* arr[] , int arr_size) * returns the lookup result to lookup_loc_range_src_php * internal function */ -static char* lookup_loc_range(char* loc_range, HashTable* hash_arr, int canonicalize TSRMLS_DC) +static char* lookup_loc_range(const char* loc_range, HashTable* hash_arr, int canonicalize TSRMLS_DC) { int i = 0; int cur_arr_len = 0; @@ -1520,7 +1523,7 @@ PHP_FUNCTION(locale_lookup) { char* fallback_loc = NULL; int fallback_loc_len = 0; - char* loc_range = NULL; + const char* loc_range = NULL; int loc_range_len = 0; zval* arr = NULL; diff --git a/ext/intl/msgformat/msgformat.c b/ext/intl/msgformat/msgformat.c index 6a9f04f32..7d8cd958e 100644 --- a/ext/intl/msgformat/msgformat.c +++ b/ext/intl/msgformat/msgformat.c @@ -28,7 +28,7 @@ /* {{{ */ static void msgfmt_ctor(INTERNAL_FUNCTION_PARAMETERS) { - char* locale; + const char* locale; char* pattern; int locale_len = 0, pattern_len = 0; UChar* spattern = NULL; diff --git a/ext/intl/msgformat/msgformat_format.c b/ext/intl/msgformat/msgformat_format.c index 4b81cfe2b..55ec9e84b 100644 --- a/ext/intl/msgformat/msgformat_format.c +++ b/ext/intl/msgformat/msgformat_format.c @@ -103,7 +103,7 @@ PHP_FUNCTION( msgfmt_format_message ) int spattern_len = 0; char *pattern = NULL; int pattern_len = 0; - char *slocale = NULL; + const char *slocale = NULL; int slocale_len = 0; MessageFormatter_object mf = {0}; MessageFormatter_object *mfo = &mf; diff --git a/ext/intl/msgformat/msgformat_helpers.cpp b/ext/intl/msgformat/msgformat_helpers.cpp index c4456d54f..f75fd91dc 100644 --- a/ext/intl/msgformat/msgformat_helpers.cpp +++ b/ext/intl/msgformat/msgformat_helpers.cpp @@ -209,6 +209,9 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo, continue; } } + } else { + intl_errors_set(&err, U_INVALID_FORMAT_ERROR, "Invalid part type encountered", 0 TSRMLS_CC); + continue; } UMessagePatternArgType argType = p.getArgType(); diff --git a/ext/intl/msgformat/msgformat_parse.c b/ext/intl/msgformat/msgformat_parse.c index 413d3b1f1..14a636342 100644 --- a/ext/intl/msgformat/msgformat_parse.c +++ b/ext/intl/msgformat/msgformat_parse.c @@ -93,7 +93,7 @@ PHP_FUNCTION( msgfmt_parse_message ) int spattern_len = 0; char *pattern = NULL; int pattern_len = 0; - char *slocale = NULL; + const char *slocale = NULL; int slocale_len = 0; char *source = NULL; int src_len = 0; diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c b/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c index 4deb02960..03e9633ca 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c @@ -142,7 +142,7 @@ const struct mbfl_convert_vtbl vtbl_wchar_2022jp_kddi = { int mbfl_filt_conv_2022jp_mobile_wchar(int c, mbfl_convert_filter *filter) { - int c1, s, w, snd; + int c1, s, w, snd = 0; retry: switch (filter->status & 0xf) { diff --git a/ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c b/ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c index 4e1838f06..87bb2f21f 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c @@ -134,7 +134,7 @@ int mbfl_filt_conv_jis2004_wchar(int c, mbfl_convert_filter *filter) { int k; - int c1, c2, s, s1, s2, w = 0, w1; + int c1, c2, s, s1 = 0, s2 = 0, w = 0, w1; retry: switch (filter->status & 0xf) { diff --git a/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c b/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c index 7a549af66..93ac34644 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c @@ -605,7 +605,7 @@ mbfilter_unicode2sjis_emoji_sb(int c, int *s1, mbfl_convert_filter *filter) int mbfl_filt_conv_sjis_mobile_wchar(int c, mbfl_convert_filter *filter) { - int c1, s, s1, s2, w; + int c1, s, s1 = 0, s2 = 0, w; int snd = 0; retry: diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter.c b/ext/mbstring/libmbfl/mbfl/mbfilter.c index b3759f940..3b14727d6 100644 --- a/ext/mbstring/libmbfl/mbfl/mbfilter.c +++ b/ext/mbstring/libmbfl/mbfl/mbfilter.c @@ -985,7 +985,7 @@ mbfl_strpos( { int result; mbfl_string _haystack_u8, _needle_u8; - const mbfl_string *haystack_u8, *needle_u8; + const mbfl_string *haystack_u8, *needle_u8 = NULL; const unsigned char *u8_tbl; if (haystack == NULL || haystack->val == NULL || needle == NULL || needle->val == NULL) { diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 3ee5c803a..e67aba8da 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -385,7 +385,7 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval ***args, unsigned int argc, /* Changed to my_bool in MySQL 5.1. See MySQL Bug #16144 */ my_bool tmp; #else - uint tmp = 0; + ulong tmp = 0; #endif stmt->result.buf[ofs].type = IS_STRING; /* diff --git a/ext/mysqli/tests/bug66043.phpt b/ext/mysqli/tests/bug66043.phpt new file mode 100644 index 000000000..d0e8b1c3d --- /dev/null +++ b/ext/mysqli/tests/bug66043.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug #66043 (Segfault calling bind_param() on mysqli) +--SKIPIF-- +<?php +require_once('skipif.inc'); +require_once("connect.inc"); +if ($IS_MYSQLND) { + die("skip libmysql only test"); +} +require_once('skipifconnectfailure.inc'); +?> +--FILE-- +<?php +require 'connect.inc'; +$db = new mysqli($host, $user, $passwd, 'mysql'); + +$stmt = $db->stmt_init(); +$stmt->prepare("SELECT User FROM user WHERE password=\"\""); +$stmt->execute(); +$stmt->bind_result($testArg); +echo "Okey"; +?> +--EXPECTF-- +Okey diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index b41e5424f..c9e134f7a 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -557,7 +557,7 @@ mysqlnd_run_authentication( if (!auth_plugin) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "The server requested authentication method unknown to the client [%s]", requested_protocol); - SET_CLIENT_ERROR(*conn->error_info, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE, "The server requested authentication method umknown to the client"); + SET_CLIENT_ERROR(*conn->error_info, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE, "The server requested authentication method unknown to the client"); goto end; } DBG_INF("plugin found"); @@ -2247,7 +2247,6 @@ MYSQLND_METHOD(mysqlnd_conn_data, change_user)(MYSQLND_CONN_DATA * const conn, } if (!db) { db = ""; - } /* XXX: passwords that have \0 inside work during auth, but in this case won't work with change user */ diff --git a/ext/odbc/php_odbc_includes.h b/ext/odbc/php_odbc_includes.h index ca237c053..c00583b16 100644 --- a/ext/odbc/php_odbc_includes.h +++ b/ext/odbc/php_odbc_includes.h @@ -232,7 +232,7 @@ typedef struct odbc_connection { } odbc_connection; typedef struct odbc_result_value { - char name[32]; + char name[256]; char *value; SQLLEN vallen; SQLLEN coltype; diff --git a/ext/opcache/README b/ext/opcache/README index 6c3cc746e..2e30d92c0 100644 --- a/ext/opcache/README +++ b/ext/opcache/README @@ -31,8 +31,8 @@ Quick Install zend_extension=/...full path.../opcache.so -NOTE: In case you are going to use Zend OPcache together with Xdebug, -be sure that Xdebug is loaded after OPcache. "php -v" must show Xdebug +NOTE: In case you are going to use Zend OPcache together with Xdebug or Zend Debugger, +be sure that the debugger is loaded after OPcache. "php -v" must show the debugger after OPcache. - Restart PHP @@ -80,8 +80,8 @@ opcache.max_accelerated_files (default "2000") The maximum number of keys (scripts) in the OPcache hash table. The number is actually the first one in the following set of prime numbers that is bigger than the one supplied: { 223, 463, 983, 1979, 3907, - 7963, 16229, 32531, 65407, 130987 }. Only numbers between 200 and 100000 - are allowed. + 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 }. Only numbers + between 200 and 1000000 are allowed. opcache.max_wasted_percentage (default "5") The maximum percentage of "wasted" memory until a restart is scheduled. diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index 72b5a1b9f..8eaa0a377 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -1196,6 +1196,8 @@ static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_scr /* store script structure in the hash table */ bucket = zend_accel_hash_update(&ZCSG(hash), new_persistent_script->full_path, new_persistent_script->full_path_len + 1, 0, new_persistent_script); if (bucket && + /* key may contain non-persistent PHAR aliases (see issues #115 and #149) */ + memcmp(key, "phar://", sizeof("phar://") - 1) != 0 && (new_persistent_script->full_path_len != key_length || memcmp(new_persistent_script->full_path, key, key_length) != 0)) { /* link key to the same persistent script in hash table */ @@ -1651,7 +1653,18 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type T #endif void *dummy = (void *) 1; - zend_hash_quick_add(&EG(included_files), persistent_script->full_path, persistent_script->full_path_len + 1, persistent_script->hash_value, &dummy, sizeof(void *), NULL); + if (zend_hash_quick_add(&EG(included_files), persistent_script->full_path, persistent_script->full_path_len + 1, persistent_script->hash_value, &dummy, sizeof(void *), NULL) == SUCCESS) { + /* ext/phar has to load phar's metadata into memory */ + if (strstr(persistent_script->full_path, ".phar") && !strstr(persistent_script->full_path, "://")) { + php_stream_statbuf ssb; + char *fname = emalloc(sizeof("phar://") + persistent_script->full_path_len); + + memcpy(fname, "phar://", sizeof("phar://") - 1); + memcpy(fname + sizeof("phar://") - 1, persistent_script->full_path, persistent_script->full_path_len + 1); + php_stream_stat_path(fname, &ssb); + efree(fname); + } + } } } #if ZEND_EXTENSION_API_NO < PHP_5_3_X_API_NO diff --git a/ext/opcache/tests/issue0115.phpt b/ext/opcache/tests/issue0115.phpt new file mode 100644 index 000000000..a1e469ff2 --- /dev/null +++ b/ext/opcache/tests/issue0115.phpt @@ -0,0 +1,48 @@ +--TEST--
+ISSUE #115 (path issue when using phar)
+--INI--
+opcache.enable=1
+opcache.enable_cli=1
+phar.readonly=0
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+<?php if (!extension_loaded("phar")) die("skip"); ?>
+<?php if (php_sapi_name() != "cli") die("skip CLI only"); ?>
+--FILE--
+<?php
+$stub = '<?php
+Phar::interceptFileFuncs();
+require "phar://this/index.php";
+__HALT_COMPILER(); ?>';
+$p = new Phar(__DIR__ . '/issue0115_1.phar.php', 0, 'this');
+$p['index.php'] = '<?php
+echo "Hello from Index 1.\n";
+require_once "phar://this/hello.php";
+';
+$p['hello.php'] = "Hello World 1!\n";
+$p->setStub($stub);
+unset($p);
+$p = new Phar(__DIR__ . '/issue0115_2.phar.php', 0, 'this');
+$p['index.php'] = '<?php
+echo "Hello from Index 2.\n";
+require_once "phar://this/hello.php";
+';
+$p['hello.php'] = "Hello World 2!\n";
+$p->setStub($stub);
+unset($p);
+
+include "php_cli_server.inc";
+php_cli_server_start('-d opcache.enable=1 -d opcache.enable_cli=1');
+echo file_get_contents('http://' . PHP_CLI_SERVER_ADDRESS . '/issue0115_1.phar.php');
+echo file_get_contents('http://' . PHP_CLI_SERVER_ADDRESS . '/issue0115_2.phar.php');
+?>
+--CLEAN--
+<?php
+@unlink(__DIR__ . '/issue0115_1.phar.php');
+@unlink(__DIR__ . '/issue0115_2.phar.php');
+?>
+--EXPECT--
+Hello from Index 1.
+Hello World 1!
+Hello from Index 2.
+Hello World 2!
diff --git a/ext/opcache/tests/issue0149.phpt b/ext/opcache/tests/issue0149.phpt new file mode 100644 index 000000000..7044d3938 --- /dev/null +++ b/ext/opcache/tests/issue0149.phpt @@ -0,0 +1,35 @@ +--TEST--
+ISSUE #149 (Phar mount points not working this OPcache enabled)
+--INI--
+opcache.enable=1
+opcache.enable_cli=1
+phar.readonly=0
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+<?php if (!extension_loaded("phar")) die("skip"); ?>
+<?php if (php_sapi_name() != "cli") die("skip CLI only"); ?>
+--FILE--
+<?php
+$stub = "<?php header('Content-Type: text/plain;');
+Phar::mount('this.file', '". __FILE__ . "');
+echo 'OK\n';
+__HALT_COMPILER(); ?>";
+$p = new Phar(__DIR__ . '/issue0149.phar.php', 0, 'this');
+$p['index.php'] = ""; # A Phar must have at least one file, hence this dummy
+$p->setStub($stub);
+unset($p);
+
+include "php_cli_server.inc";
+php_cli_server_start('-d opcache.enable=1 -d opcache.enable_cli=1');
+echo file_get_contents('http://' . PHP_CLI_SERVER_ADDRESS . '/issue0149.phar.php');
+echo file_get_contents('http://' . PHP_CLI_SERVER_ADDRESS . '/issue0149.phar.php');
+echo file_get_contents('http://' . PHP_CLI_SERVER_ADDRESS . '/issue0149.phar.php');
+?>
+--CLEAN--
+<?php
+@unlink(__DIR__ . '/issue0149.phar.php');
+?>
+--EXPECT--
+OK
+OK
+OK
diff --git a/ext/opcache/tests/php_cli_server.inc b/ext/opcache/tests/php_cli_server.inc new file mode 100644 index 000000000..0878bfafc --- /dev/null +++ b/ext/opcache/tests/php_cli_server.inc @@ -0,0 +1,47 @@ +<?php +define ("PHP_CLI_SERVER_HOSTNAME", "localhost"); +define ("PHP_CLI_SERVER_PORT", 8964); +define ("PHP_CLI_SERVER_ADDRESS", PHP_CLI_SERVER_HOSTNAME.":".PHP_CLI_SERVER_PORT); + +function php_cli_server_start($ini = "") { + $php_executable = getenv('TEST_PHP_EXECUTABLE'); + $doc_root = __DIR__; + + $descriptorspec = array( + 0 => STDIN, + 1 => STDOUT, + 2 => STDERR, + ); + + if (substr(PHP_OS, 0, 3) == 'WIN') { + $cmd = "{$php_executable} -t {$doc_root} $ini -S " . PHP_CLI_SERVER_ADDRESS; + $handle = proc_open(addslashes($cmd), $descriptorspec, $pipes, $doc_root, NULL, array("bypass_shell" => true, "suppress_errors" => true)); + } else { + $cmd = "exec {$php_executable} -t {$doc_root} $ini -S " . PHP_CLI_SERVER_ADDRESS . " 2>/dev/null"; + $handle = proc_open($cmd, $descriptorspec, $pipes, $doc_root); + } + + // note: even when server prints 'Listening on localhost:8964...Press Ctrl-C to quit.' + // it might not be listening yet...need to wait until fsockopen() call returns + $i = 0; + while (($i++ < 30) && !($fp = @fsockopen(PHP_CLI_SERVER_HOSTNAME, PHP_CLI_SERVER_PORT))) { + usleep(10000); + } + + if ($fp) { + fclose($fp); + } + + register_shutdown_function( + function($handle) { + proc_terminate($handle); + }, + $handle + ); + // don't bother sleeping, server is already up + // server can take a variable amount of time to be up, so just sleeping a guessed amount of time + // does not work. this is why tests sometimes pass and sometimes fail. to get a reliable pass + // sleeping doesn't work. +} +?> + diff --git a/ext/opcache/zend_accelerator_module.c b/ext/opcache/zend_accelerator_module.c index dedb7215c..0914fb68d 100644 --- a/ext/opcache/zend_accelerator_module.c +++ b/ext/opcache/zend_accelerator_module.c @@ -34,7 +34,7 @@ #define STRING_NOT_NULL(s) (NULL == (s)?"":s) #define MIN_ACCEL_FILES 200 -#define MAX_ACCEL_FILES 100000 +#define MAX_ACCEL_FILES 1000000 #define TOKENTOSTR(X) #X static void (*orig_file_exists)(INTERNAL_FUNCTION_PARAMETERS) = NULL; diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c index d5860b1a1..ac8d29a95 100644 --- a/ext/pdo/pdo_dbh.c +++ b/ext/pdo/pdo_dbh.c @@ -460,7 +460,7 @@ static void pdo_stmt_construct(pdo_stmt_t *stmt, zval *object, zend_class_entry if (dbstmt_ce->constructor) { zend_fcall_info fci; zend_fcall_info_cache fcc; - zval *retval; + zval *retval = NULL; fci.size = sizeof(zend_fcall_info); fci.function_table = &dbstmt_ce->function_table; @@ -495,7 +495,7 @@ static void pdo_stmt_construct(pdo_stmt_t *stmt, zval *object, zend_class_entry zval_dtor(object); ZVAL_NULL(object); object = NULL; /* marks failure */ - } else { + } else if (retval) { zval_ptr_dtor(&retval); } diff --git a/ext/pdo/pdo_sql_parser.c b/ext/pdo/pdo_sql_parser.c index a0a2f90ab..bd48e18da 100644 --- a/ext/pdo/pdo_sql_parser.c +++ b/ext/pdo/pdo_sql_parser.c @@ -566,7 +566,9 @@ safe: } plc->freeq = 1; } else { - switch (Z_TYPE_P(param->parameter)) { + zval tmp_param = *param->parameter; + zval_copy_ctor(&tmp_param); + switch (Z_TYPE(tmp_param)) { case IS_NULL: plc->quoted = "NULL"; plc->qlen = sizeof("NULL")-1; @@ -574,20 +576,20 @@ safe: break; case IS_BOOL: - convert_to_long(param->parameter); - + convert_to_long(&tmp_param); + /* fall through */ case IS_LONG: case IS_DOUBLE: - convert_to_string(param->parameter); - plc->qlen = Z_STRLEN_P(param->parameter); - plc->quoted = Z_STRVAL_P(param->parameter); - plc->freeq = 0; + convert_to_string(&tmp_param); + plc->qlen = Z_STRLEN(tmp_param); + plc->quoted = estrdup(Z_STRVAL(tmp_param)); + plc->freeq = 1; break; default: - convert_to_string(param->parameter); - if (!stmt->dbh->methods->quoter(stmt->dbh, Z_STRVAL_P(param->parameter), - Z_STRLEN_P(param->parameter), &plc->quoted, &plc->qlen, + convert_to_string(&tmp_param); + if (!stmt->dbh->methods->quoter(stmt->dbh, Z_STRVAL(tmp_param), + Z_STRLEN(tmp_param), &plc->quoted, &plc->qlen, param->param_type TSRMLS_CC)) { /* bork */ ret = -1; @@ -596,6 +598,7 @@ safe: } plc->freeq = 1; } + zval_dtor(&tmp_param); } } else { plc->quoted = Z_STRVAL_P(param->parameter); diff --git a/ext/pdo/pdo_sql_parser.re b/ext/pdo/pdo_sql_parser.re index 1936a3734..fa8ef187f 100644 --- a/ext/pdo/pdo_sql_parser.re +++ b/ext/pdo/pdo_sql_parser.re @@ -228,7 +228,9 @@ safe: } plc->freeq = 1; } else { - switch (Z_TYPE_P(param->parameter)) { + zval tmp_param = *param->parameter; + zval_copy_ctor(&tmp_param); + switch (Z_TYPE(tmp_param)) { case IS_NULL: plc->quoted = "NULL"; plc->qlen = sizeof("NULL")-1; @@ -236,20 +238,20 @@ safe: break; case IS_BOOL: - convert_to_long(param->parameter); - + convert_to_long(&tmp_param); + /* fall through */ case IS_LONG: case IS_DOUBLE: - convert_to_string(param->parameter); - plc->qlen = Z_STRLEN_P(param->parameter); - plc->quoted = Z_STRVAL_P(param->parameter); - plc->freeq = 0; + convert_to_string(&tmp_param); + plc->qlen = Z_STRLEN(tmp_param); + plc->quoted = estrdup(Z_STRVAL(tmp_param)); + plc->freeq = 1; break; default: - convert_to_string(param->parameter); - if (!stmt->dbh->methods->quoter(stmt->dbh, Z_STRVAL_P(param->parameter), - Z_STRLEN_P(param->parameter), &plc->quoted, &plc->qlen, + convert_to_string(&tmp_param); + if (!stmt->dbh->methods->quoter(stmt->dbh, Z_STRVAL(tmp_param), + Z_STRLEN(tmp_param), &plc->quoted, &plc->qlen, param->param_type TSRMLS_CC)) { /* bork */ ret = -1; @@ -258,6 +260,7 @@ safe: } plc->freeq = 1; } + zval_dtor(&tmp_param); } } else { plc->quoted = Z_STRVAL_P(param->parameter); diff --git a/ext/pdo/tests/bug65946.phpt b/ext/pdo/tests/bug65946.phpt new file mode 100644 index 000000000..1c4bd8d6c --- /dev/null +++ b/ext/pdo/tests/bug65946.phpt @@ -0,0 +1,32 @@ +--TEST-- +Bug #65946 (pdo_sql_parser.c permanently converts values bound to strings) +--SKIPIF-- +<?php +if (!extension_loaded('pdo')) die('skip'); +$dir = getenv('REDIR_TEST_DIR'); +if (false == $dir) die('skip no driver'); +require_once $dir . 'pdo_test.inc'; +PDOTest::skip(); +?> +--FILE-- +<?php +if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.dirname(__FILE__) . '/../../pdo/tests/'); +require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc'; +$db = PDOTest::factory(); +$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); +$db->exec('CREATE TABLE test(id int)'); +$db->exec('INSERT INTO test VALUES(1)'); +$stmt = $db->prepare('SELECT * FROM test LIMIT :limit'); +$stmt->bindValue('limit', 1, PDO::PARAM_INT); +if(!($res = $stmt->execute())) var_dump($stmt->errorInfo()); +if(!($res = $stmt->execute())) var_dump($stmt->errorInfo()); +var_dump($stmt->fetchAll(PDO::FETCH_ASSOC)); +?> +--EXPECTF-- +array(1) { + [0]=> + array(1) { + ["id"]=> + string(1) "1" + } +} diff --git a/ext/pdo_sqlite/tests/bug66033.phpt b/ext/pdo_sqlite/tests/bug66033.phpt new file mode 100644 index 000000000..28da3b54b --- /dev/null +++ b/ext/pdo_sqlite/tests/bug66033.phpt @@ -0,0 +1,33 @@ +--TEST-- +Bug #66033 (Segmentation Fault when constructor of PDO statement throws an exception) +--SKIPIF-- +<?php +if (!extension_loaded('pdo_sqlite')) print 'skip not loaded'; +?> +--FILE-- +<?php +class DBStatement extends PDOStatement { + public $dbh; + protected function __construct($dbh) { + $this->dbh = $dbh; + throw new Exception("Blah"); + } +} + +$pdo = new PDO('sqlite::memory:', null, null); +$pdo->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('DBStatement', + array($pdo))); +$pdo->exec("CREATE TABLE IF NOT EXISTS messages ( + id INTEGER PRIMARY KEY, + title TEXT, + message TEXT, + time INTEGER)"); + +try { + $pdoStatement = $pdo->query("select * from messages"); +} catch (Exception $e) { + var_dump($e->getMessage()); +} +?> +--EXPECTF-- +string(4) "Blah" diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index 35eb09e58..32d407af7 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -2639,7 +2639,7 @@ static void php_pgsql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, long result_type, Bucket *p; fci.param_count = 0; - fci.params = safe_emalloc(sizeof(zval*), ht->nNumOfElements, 0); + fci.params = safe_emalloc(sizeof(zval***), ht->nNumOfElements, 0); p = ht->pListHead; while (p != NULL) { fci.params[fci.param_count++] = (zval**)p->pData; diff --git a/ext/phar/config.m4 b/ext/phar/config.m4 index d424060f2..614d672ea 100644 --- a/ext/phar/config.m4 +++ b/ext/phar/config.m4 @@ -28,5 +28,7 @@ if test "$PHP_PHAR" != "no"; then PHP_ADD_EXTENSION_DEP(phar, spl, true) PHP_ADD_MAKEFILE_FRAGMENT + PHP_INSTALL_HEADERS([ext/phar], [php_phar.h]) + PHP_OUTPUT(ext/phar/phar.1 ext/phar/phar.phar.1) fi diff --git a/ext/phar/dirstream.c b/ext/phar/dirstream.c index c29ca9d96..98af1bffc 100644 --- a/ext/phar/dirstream.c +++ b/ext/phar/dirstream.c @@ -168,11 +168,7 @@ static int phar_compare_dir_name(const void *a, const void *b TSRMLS_DC) /* {{{ f = *((Bucket **) a); s = *((Bucket **) b); -#if (PHP_MAJOR_VERSION < 6) result = zend_binary_strcmp(f->arKey, f->nKeyLength, s->arKey, s->nKeyLength); -#else - result = zend_binary_strcmp(f->key.arKey.s, f->nKeyLength, s->key.arKey.s, s->nKeyLength); -#endif if (result < 0) { return -1; diff --git a/ext/phar/phar.c b/ext/phar/phar.c index ec8e5fbde..13b3d6428 100644 --- a/ext/phar/phar.c +++ b/ext/phar/phar.c @@ -27,9 +27,7 @@ static void destroy_phar_data(void *pDest); ZEND_DECLARE_MODULE_GLOBALS(phar) -#if PHP_VERSION_ID >= 50300 char *(*phar_save_resolve_path)(const char *filename, int filename_len TSRMLS_DC); -#endif /** * set's phar->is_writeable based on the current INI value @@ -3321,31 +3319,18 @@ static size_t phar_zend_stream_reader(void *handle, char *buf, size_t len TSRMLS } /* }}} */ -#if PHP_VERSION_ID >= 50300 static size_t phar_zend_stream_fsizer(void *handle TSRMLS_DC) /* {{{ */ { return ((phar_archive_data*)handle)->halt_offset + 32; } /* }}} */ -#else /* PHP_VERSION_ID */ - -static long phar_stream_fteller_for_zend(void *handle TSRMLS_DC) /* {{{ */ -{ - return (long)php_stream_tell(phar_get_pharfp((phar_archive_data*)handle TSRMLS_CC)); -} -/* }}} */ -#endif - zend_op_array *(*phar_orig_compile_file)(zend_file_handle *file_handle, int type TSRMLS_DC); -#if PHP_VERSION_ID >= 50300 #define phar_orig_zend_open zend_stream_open_function + static char *phar_resolve_path(const char *filename, int filename_len TSRMLS_DC) { return phar_find_in_include_path((char *) filename, filename_len, NULL TSRMLS_CC); } -#else -int (*phar_orig_zend_open)(const char *filename, zend_file_handle *handle TSRMLS_DC); -#endif static zend_op_array *phar_compile_file(zend_file_handle *file_handle, int type TSRMLS_DC) /* {{{ */ { @@ -3378,7 +3363,6 @@ static zend_op_array *phar_compile_file(zend_file_handle *file_handle, int type } } else if (phar->flags & PHAR_FILE_COMPRESSION_MASK) { /* compressed phar */ -#if PHP_VERSION_ID >= 50300 file_handle->type = ZEND_HANDLE_STREAM; /* we do our own reading directly from the phar, don't change the next line */ file_handle->handle.stream.handle = phar; @@ -3390,18 +3374,6 @@ static zend_op_array *phar_compile_file(zend_file_handle *file_handle, int type php_stream_rewind(PHAR_GLOBALS->cached_fp[phar->phar_pos].fp) : php_stream_rewind(phar->fp); memset(&file_handle->handle.stream.mmap, 0, sizeof(file_handle->handle.stream.mmap)); -#else /* PHP_VERSION_ID */ - file_handle->type = ZEND_HANDLE_STREAM; - /* we do our own reading directly from the phar, don't change the next line */ - file_handle->handle.stream.handle = phar; - file_handle->handle.stream.reader = phar_zend_stream_reader; - file_handle->handle.stream.closer = NULL; /* don't close - let phar handle this one */ - file_handle->handle.stream.fteller = phar_stream_fteller_for_zend; - file_handle->handle.stream.interactive = 0; - phar->is_persistent ? - php_stream_rewind(PHAR_GLOBALS->cached_fp[phar->phar_pos].fp) : - php_stream_rewind(phar->fp); -#endif } } } @@ -3426,60 +3398,6 @@ static zend_op_array *phar_compile_file(zend_file_handle *file_handle, int type } /* }}} */ -#if PHP_VERSION_ID < 50300 -int phar_zend_open(const char *filename, zend_file_handle *handle TSRMLS_DC) /* {{{ */ -{ - char *arch, *entry; - int arch_len, entry_len; - - /* this code is obsoleted in php 5.3 */ - entry = (char *) filename; - if (!IS_ABSOLUTE_PATH(entry, strlen(entry)) && !strstr(entry, "://")) { - phar_archive_data **pphar = NULL; - char *fname; - int fname_len; - - fname = (char*)zend_get_executed_filename(TSRMLS_C); - fname_len = strlen(fname); - - if (fname_len > 7 && !strncasecmp(fname, "phar://", 7)) { - if (SUCCESS == phar_split_fname(fname, fname_len, &arch, &arch_len, &entry, &entry_len, 1, 0 TSRMLS_CC)) { - zend_hash_find(&(PHAR_GLOBALS->phar_fname_map), arch, arch_len, (void **) &pphar); - if (!pphar && PHAR_G(manifest_cached)) { - zend_hash_find(&cached_phars, arch, arch_len, (void **) &pphar); - } - efree(arch); - efree(entry); - } - } - - /* retrieving an include within the current directory, so use this if possible */ - if (!(entry = phar_find_in_include_path((char *) filename, strlen(filename), NULL TSRMLS_CC))) { - /* this file is not in the phar, use the original path */ - goto skip_phar; - } - - if (SUCCESS == phar_orig_zend_open(entry, handle TSRMLS_CC)) { - if (!handle->opened_path) { - handle->opened_path = entry; - } - if (entry != filename) { - handle->free_filename = 1; - } - return SUCCESS; - } - - if (entry != filename) { - efree(entry); - } - - return FAILURE; - } -skip_phar: - return phar_orig_zend_open(filename, handle TSRMLS_CC); -} -/* }}} */ -#endif typedef zend_op_array* (zend_compile_t)(zend_file_handle*, int TSRMLS_DC); typedef zend_compile_t* (compile_hook)(zend_compile_t *ptr); @@ -3556,13 +3474,8 @@ PHP_MINIT_FUNCTION(phar) /* {{{ */ phar_orig_compile_file = zend_compile_file; zend_compile_file = phar_compile_file; -#if PHP_VERSION_ID >= 50300 phar_save_resolve_path = zend_resolve_path; zend_resolve_path = phar_resolve_path; -#else - phar_orig_zend_open = zend_stream_open_function; - zend_stream_open_function = phar_zend_open; -#endif phar_object_init(TSRMLS_C); @@ -3583,11 +3496,6 @@ PHP_MSHUTDOWN_FUNCTION(phar) /* {{{ */ zend_compile_file = phar_orig_compile_file; } -#if PHP_VERSION_ID < 50300 - if (zend_stream_open_function == phar_zend_open) { - zend_stream_open_function = phar_orig_zend_open; - } -#endif if (PHAR_G(manifest_cached)) { zend_hash_destroy(&(cached_phars)); zend_hash_destroy(&(cached_alias)); diff --git a/ext/phar/phar_internal.h b/ext/phar/phar_internal.h index daa85f1b7..fcfb64718 100644 --- a/ext/phar/phar_internal.h +++ b/ext/phar/phar_internal.h @@ -516,76 +516,17 @@ union _phar_entry_object { #endif #ifndef PHAR_MAIN -# if PHP_VERSION_ID >= 50300 extern char *(*phar_save_resolve_path)(const char *filename, int filename_len TSRMLS_DC); -# endif #endif -#if PHP_VERSION_ID < 50209 -static inline size_t phar_stream_copy_to_stream(php_stream *src, php_stream *dest, size_t maxlen, size_t *len STREAMS_DC TSRMLS_DC) -{ - size_t ret = php_stream_copy_to_stream(src, dest, maxlen); - if (len) { - *len = ret; - } - if (ret) { - return SUCCESS; - } - return FAILURE; -} -#else # define phar_stream_copy_to_stream(src, dest, maxlen, len) _php_stream_copy_to_stream_ex((src), (dest), (maxlen), (len) STREAMS_CC TSRMLS_CC) -#endif - -#if PHP_VERSION_ID >= 60000 -typedef zstr phar_zstr; -#define PHAR_STR(a, b) \ - spprintf(&b, 0, "%s", a.s); -#define PHAR_ZSTR(a, b) \ - b = ZSTR(a); -#define PHAR_STR_FREE(a) \ - efree(a); -static inline int phar_make_unicode(zstr *c_var, char *arKey, uint nKeyLength TSRMLS_DC) -{ - int c_var_len; - UConverter *conv = ZEND_U_CONVERTER(UG(runtime_encoding_conv)); - - c_var->u = NULL; - if (zend_string_to_unicode(conv, &c_var->u, &c_var_len, arKey, nKeyLength TSRMLS_CC) == FAILURE) { - - if (c_var->u) { - efree(c_var->u); - } - return 0; - - } - return c_var_len; -} -static inline int phar_find_key(HashTable *_SERVER, char *key, int len, void **stuff TSRMLS_DC) -{ - if (SUCCESS == zend_hash_find(_SERVER, key, len, stuff)) { - return 1; - } else { - int s = len; - zstr var; - s = phar_make_unicode(&var, key, len TSRMLS_CC); - if (SUCCESS == zend_u_hash_find(_SERVER, IS_UNICODE, var, s, stuff)) { - efree(var.u); - return 1; - } - efree(var.u); - return 0; - } -} -#else typedef char *phar_zstr; #define PHAR_STR(a, b) \ b = a; #define PHAR_ZSTR(a, b) \ b = a; #define PHAR_STR_FREE(a) -#endif BEGIN_EXTERN_C() diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c index dcb67fe9f..7d2922fba 100644 --- a/ext/phar/phar_object.c +++ b/ext/phar/phar_object.c @@ -685,11 +685,7 @@ PHP_METHOD(Phar, webPhar) ZVAL_STRINGL(params, entry, entry_len, 1); zp[0] = ¶ms; -#if PHP_VERSION_ID < 50300 - if (FAILURE == zend_fcall_info_init(rewrite, &fci, &fcc TSRMLS_CC)) { -#else if (FAILURE == zend_fcall_info_init(rewrite, 0, &fci, &fcc, NULL, NULL TSRMLS_CC)) { -#endif zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "phar error: invalid rewrite callback"); if (free_pathinfo) { @@ -701,11 +697,7 @@ PHP_METHOD(Phar, webPhar) fci.param_count = 1; fci.params = zp; -#if PHP_VERSION_ID < 50300 - ++(params->refcount); -#else Z_ADDREF_P(params); -#endif fci.retval_ptr_ptr = &retval_ptr; if (FAILURE == zend_call_function(&fci, &fcc TSRMLS_CC)) { @@ -729,11 +721,6 @@ PHP_METHOD(Phar, webPhar) } switch (Z_TYPE_P(retval_ptr)) { -#if PHP_VERSION_ID >= 60000 - case IS_UNICODE: - zval_unicode_to_string(retval_ptr TSRMLS_CC); - /* break intentionally omitted */ -#endif case IS_STRING: efree(entry); @@ -1155,11 +1142,7 @@ PHP_METHOD(Phar, __construct) #else char *fname, *alias = NULL, *error, *arch = NULL, *entry = NULL, *save_fname; int fname_len, alias_len = 0, arch_len, entry_len, is_data; -#if PHP_VERSION_ID < 50300 - long flags = 0; -#else long flags = SPL_FILE_DIR_SKIPDOTS|SPL_FILE_DIR_UNIXPATHS; -#endif long format = 0; phar_archive_object *phar_obj; phar_archive_data *phar_data; @@ -1459,11 +1442,6 @@ static int phar_build(zend_object_iterator *iter, void *puser TSRMLS_DC) /* {{{ } switch (Z_TYPE_PP(value)) { -#if PHP_VERSION_ID >= 60000 - case IS_UNICODE: - zval_unicode_to_string(*(value) TSRMLS_CC); - /* break intentionally omitted */ -#endif case IS_STRING: break; case IS_RESOURCE: @@ -1514,13 +1492,7 @@ static int phar_build(zend_object_iterator *iter, void *puser TSRMLS_DC) /* {{{ switch (intern->type) { case SPL_FS_DIR: -#if PHP_VERSION_ID >= 60000 - test = spl_filesystem_object_get_path(intern, NULL, NULL TSRMLS_CC).s; -#elif PHP_VERSION_ID >= 50300 test = spl_filesystem_object_get_path(intern, NULL TSRMLS_CC); -#else - test = intern->path; -#endif fname_len = spprintf(&fname, 0, "%s%c%s", test, DEFAULT_SLASH, intern->u.dir.entry.d_name); php_stat(fname, fname_len, FS_IS_DIR, &dummy TSRMLS_CC); @@ -1545,25 +1517,7 @@ static int phar_build(zend_object_iterator *iter, void *puser TSRMLS_DC) /* {{{ goto phar_spl_fileinfo; case SPL_FS_INFO: case SPL_FS_FILE: -#if PHP_VERSION_ID >= 60000 - if (intern->file_name_type == IS_UNICODE) { - zval zv; - - INIT_ZVAL(zv); - Z_UNIVAL(zv) = intern->file_name; - Z_UNILEN(zv) = intern->file_name_len; - Z_TYPE(zv) = IS_UNICODE; - - zval_copy_ctor(&zv); - zval_unicode_to_string(&zv TSRMLS_CC); - fname = expand_filepath(Z_STRVAL(zv), NULL TSRMLS_CC); - ezfree(Z_UNIVAL(zv)); - } else { - fname = expand_filepath(intern->file_name.s, NULL TSRMLS_CC); - } -#else fname = expand_filepath(intern->file_name, NULL TSRMLS_CC); -#endif if (!fname) { zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0 TSRMLS_CC, "Could not resolve file path"); return ZEND_HASH_APPLY_STOP; @@ -1816,11 +1770,7 @@ PHP_METHOD(Phar, buildFromDirectory) INIT_PZVAL(&arg); ZVAL_STRINGL(&arg, dir, dir_len, 0); INIT_PZVAL(&arg2); -#if PHP_VERSION_ID < 50300 - ZVAL_LONG(&arg2, 0); -#else ZVAL_LONG(&arg2, SPL_FILE_DIR_SKIPDOTS|SPL_FILE_DIR_UNIXPATHS); -#endif zend_call_method_with_2_params(&iter, spl_ce_RecursiveDirectoryIterator, &spl_ce_RecursiveDirectoryIterator->constructor, "__construct", NULL, &arg, &arg2); @@ -2313,11 +2263,7 @@ static zval *phar_convert_to_other(phar_archive_data *source, int convert, char ALLOC_ZVAL(phar->metadata); *phar->metadata = *t; zval_copy_ctor(phar->metadata); -#if PHP_VERSION_ID < 50300 - phar->metadata->refcount = 1; -#else Z_SET_REFCOUNT_P(phar->metadata, 1); -#endif phar->metadata_len = 0; } @@ -2365,11 +2311,7 @@ no_copy: ALLOC_ZVAL(newentry.metadata); *newentry.metadata = *t; zval_copy_ctor(newentry.metadata); -#if PHP_VERSION_ID < 50300 - newentry.metadata->refcount = 1; -#else Z_SET_REFCOUNT_P(newentry.metadata, 1); -#endif newentry.metadata_str.c = NULL; newentry.metadata_str.len = 0; @@ -3552,11 +3494,7 @@ PHP_METHOD(Phar, copy) ALLOC_ZVAL(newentry.metadata); *newentry.metadata = *t; zval_copy_ctor(newentry.metadata); -#if PHP_VERSION_ID < 50300 - newentry.metadata->refcount = 1; -#else Z_SET_REFCOUNT_P(newentry.metadata, 1); -#endif newentry.metadata_str.c = NULL; newentry.metadata_str.len = 0; @@ -4371,11 +4309,6 @@ PHP_METHOD(Phar, extractTo) switch (Z_TYPE_P(zval_files)) { case IS_NULL: goto all_files; -#if PHP_VERSION_ID >= 60000 - case IS_UNICODE: - zval_unicode_to_string(zval_files TSRMLS_CC); - /* break intentionally omitted */ -#endif case IS_STRING: filename = Z_STRVAL_P(zval_files); filename_len = Z_STRLEN_P(zval_files); @@ -4389,11 +4322,6 @@ PHP_METHOD(Phar, extractTo) zval **zval_file; if (zend_hash_index_find(Z_ARRVAL_P(zval_files), i, (void **) &zval_file) == SUCCESS) { switch (Z_TYPE_PP(zval_file)) { -#if PHP_VERSION_ID >= 60000 - case IS_UNICODE: - zval_unicode_to_string(*(zval_file) TSRMLS_CC); - /* break intentionally omitted */ -#endif case IS_STRING: break; default: @@ -5414,11 +5342,7 @@ zend_function_entry phar_exception_methods[] = { #define REGISTER_PHAR_CLASS_CONST_LONG(class_name, const_name, value) \ zend_declare_class_constant_long(class_name, const_name, sizeof(const_name)-1, (long)value TSRMLS_CC); -#if PHP_VERSION_ID < 50200 -# define phar_exception_get_default() zend_exception_get_default() -#else -# define phar_exception_get_default() zend_exception_get_default(TSRMLS_C) -#endif +#define phar_exception_get_default() zend_exception_get_default(TSRMLS_C) void phar_object_init(TSRMLS_D) /* {{{ */ { diff --git a/ext/phar/php_phar.h b/ext/phar/php_phar.h index a6d7bff41..f8325d0c6 100644 --- a/ext/phar/php_phar.h +++ b/ext/phar/php_phar.h @@ -22,7 +22,7 @@ #ifndef PHP_PHAR_H #define PHP_PHAR_H -#define PHP_PHAR_VERSION "2.0.1" +#define PHP_PHAR_VERSION "2.0.2" #include "ext/standard/basic_functions.h" extern zend_module_entry phar_module_entry; @@ -31,9 +31,11 @@ extern zend_module_entry phar_module_entry; #ifdef PHP_WIN32 #define PHP_PHAR_API __declspec(dllexport) #else -#define PHP_PHAR_API +#define PHP_PHAR_API PHPAPI #endif +PHP_PHAR_API int phar_resolve_alias(char *alias, int alias_len, char **filename, int *filename_len TSRMLS_DC); + #endif /* PHP_PHAR_H */ diff --git a/ext/phar/stream.c b/ext/phar/stream.c index 401d81e10..f4197a5b1 100644 --- a/ext/phar/stream.c +++ b/ext/phar/stream.c @@ -942,11 +942,7 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, char *url_from, char entry->filename_len = new_key_len; PHAR_ZSTR(new_str_key, new_key); -#if PHP_VERSION_ID < 50300 - zend_hash_update_current_key_ex(&phar->manifest, key_type, new_key, new_key_len, 0, NULL); -#else zend_hash_update_current_key_ex(&phar->manifest, key_type, new_key, new_key_len, 0, HASH_UPDATE_KEY_ANYWAY, NULL); -#endif } PHAR_STR_FREE(str_key); } @@ -968,11 +964,7 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, char *url_from, char new_str_key[new_key_len] = 0; PHAR_ZSTR(new_str_key, new_key); -#if PHP_VERSION_ID < 50300 - zend_hash_update_current_key_ex(&phar->virtual_dirs, key_type, new_key, new_key_len, 0, NULL); -#else zend_hash_update_current_key_ex(&phar->virtual_dirs, key_type, new_key, new_key_len, 0, HASH_UPDATE_KEY_ANYWAY, NULL); -#endif efree(new_str_key); } PHAR_STR_FREE(str_key); @@ -996,11 +988,7 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, char *url_from, char new_str_key[new_key_len] = 0; PHAR_ZSTR(new_str_key, new_key); -#if PHP_VERSION_ID < 50300 - zend_hash_update_current_key_ex(&phar->mounted_dirs, key_type, new_key, new_key_len, 0, NULL); -#else zend_hash_update_current_key_ex(&phar->mounted_dirs, key_type, new_key, new_key_len, 0, HASH_UPDATE_KEY_ANYWAY, NULL); -#endif efree(new_str_key); } PHAR_STR_FREE(str_key); diff --git a/ext/phar/util.c b/ext/phar/util.c index 8348a4787..31d12e3da 100644 --- a/ext/phar/util.c +++ b/ext/phar/util.c @@ -41,10 +41,6 @@ static int phar_call_openssl_signverify(int is_sign, php_stream *fp, off_t end, char *key, int key_len, char **signature, int *signature_len TSRMLS_DC); #endif -#if !defined(PHP_VERSION_ID) || PHP_VERSION_ID < 50300 -extern php_stream_wrapper php_stream_phar_wrapper; -#endif - /* for links to relative location, prepend cwd of the entry */ static char *phar_get_link_location(phar_entry_info *entry TSRMLS_DC) /* {{{ */ { @@ -256,7 +252,6 @@ int phar_mount_entry(phar_archive_data *phar, char *filename, int filename_len, char *phar_find_in_include_path(char *filename, int filename_len, phar_archive_data **pphar TSRMLS_DC) /* {{{ */ { -#if PHP_VERSION_ID >= 50300 char *path, *fname, *arch, *entry, *ret, *test; int arch_len, entry_len, fname_len, ret_len; phar_archive_data *phar; @@ -344,223 +339,6 @@ splitted: } return ret; -#else /* PHP 5.2 */ - char resolved_path[MAXPATHLEN]; - char trypath[MAXPATHLEN]; - char *ptr, *end, *path = PG(include_path); - php_stream_wrapper *wrapper; - const char *p; - int n = 0; - char *fname, *arch, *entry, *ret, *test; - int arch_len, entry_len; - phar_archive_data *phar = NULL; - - if (!filename) { - return NULL; - } - - if (!zend_is_executing(TSRMLS_C) || !PHAR_G(cwd)) { - goto doit; - } - - fname = (char*)zend_get_executed_filename(TSRMLS_C); - - if (SUCCESS != phar_split_fname(fname, strlen(fname), &arch, &arch_len, &entry, &entry_len, 1, 0 TSRMLS_CC)) { - goto doit; - } - - efree(entry); - - if (*filename == '.') { - int try_len; - - if (FAILURE == phar_get_archive(&phar, arch, arch_len, NULL, 0, NULL TSRMLS_CC)) { - efree(arch); - goto doit; - } - - try_len = filename_len; - test = phar_fix_filepath(estrndup(filename, filename_len), &try_len, 1 TSRMLS_CC); - - if (*test == '/') { - if (zend_hash_exists(&(phar->manifest), test + 1, try_len - 1)) { - spprintf(&ret, 0, "phar://%s%s", arch, test); - efree(arch); - efree(test); - return ret; - } - } else { - if (zend_hash_exists(&(phar->manifest), test, try_len)) { - spprintf(&ret, 0, "phar://%s/%s", arch, test); - efree(arch); - efree(test); - return ret; - } - } - - efree(test); - } - - efree(arch); -doit: - if (*filename == '.' || IS_ABSOLUTE_PATH(filename, filename_len) || !path || !*path) { - if (tsrm_realpath(filename, resolved_path TSRMLS_CC)) { - return estrdup(resolved_path); - } else { - return NULL; - } - } - - /* test for stream wrappers and return */ - for (p = filename; p - filename < filename_len && (isalnum((int)*p) || *p == '+' || *p == '-' || *p == '.'); ++p, ++n); - - if (n < filename_len - 3 && (*p == ':') && (!strncmp("//", p+1, 2) || ( filename_len > 4 && !memcmp("data", filename, 4)))) { - /* found stream wrapper, this is an absolute path until stream wrappers implement realpath */ - return estrndup(filename, filename_len); - } - - ptr = (char *) path; - while (ptr && *ptr) { - int len, is_stream_wrapper = 0, maybe_stream = 1; - - end = strchr(ptr, DEFAULT_DIR_SEPARATOR); -#ifndef PHP_WIN32 - /* search for stream wrapper */ - if (end - ptr <= 1) { - maybe_stream = 0; - goto not_stream; - } - - for (p = ptr, n = 0; p < end && (isalnum((int)*p) || *p == '+' || *p == '-' || *p == '.'); ++p, ++n); - - if (n == end - ptr && *p && !strncmp("//", p+1, 2)) { - is_stream_wrapper = 1; - /* seek to real end of include_path portion */ - end = strchr(end + 1, DEFAULT_DIR_SEPARATOR); - } else { - maybe_stream = 0; - } -not_stream: -#endif - if (end) { - if ((end-ptr) + 1 + filename_len + 1 >= MAXPATHLEN) { - ptr = end + 1; - continue; - } - - memcpy(trypath, ptr, end-ptr); - len = end-ptr; - trypath[end-ptr] = '/'; - memcpy(trypath+(end-ptr)+1, filename, filename_len+1); - ptr = end+1; - } else { - len = strlen(ptr); - - if (len + 1 + filename_len + 1 >= MAXPATHLEN) { - break; - } - - memcpy(trypath, ptr, len); - trypath[len] = '/'; - memcpy(trypath+len+1, filename, filename_len+1); - ptr = NULL; - } - - if (!is_stream_wrapper && maybe_stream) { - /* search for stream wrapper */ - for (p = trypath, n = 0; isalnum((int)*p) || *p == '+' || *p == '-' || *p == '.'; ++p, ++n); - } - - if (is_stream_wrapper || (n < len - 3 && (*p == ':') && (n > 1) && (!strncmp("//", p+1, 2) || !memcmp("data", trypath, 4)))) { - char *actual; - - wrapper = php_stream_locate_url_wrapper(trypath, &actual, STREAM_OPEN_FOR_INCLUDE TSRMLS_CC); - if (wrapper == &php_plain_files_wrapper) { - strlcpy(trypath, actual, sizeof(trypath)); - } else if (!wrapper) { - /* if wrapper is NULL, there was a mal-formed include_path stream wrapper, so skip this ptr */ - continue; - } else { - if (wrapper->wops->url_stat) { - php_stream_statbuf ssb; - - if (SUCCESS == wrapper->wops->url_stat(wrapper, trypath, 0, &ssb, NULL TSRMLS_CC)) { - if (wrapper == &php_stream_phar_wrapper) { - char *arch, *entry; - int arch_len, entry_len, ret_len; - - ret_len = strlen(trypath); - /* found phar:// */ - - if (SUCCESS != phar_split_fname(trypath, ret_len, &arch, &arch_len, &entry, &entry_len, 1, 0 TSRMLS_CC)) { - return estrndup(trypath, ret_len); - } - - zend_hash_find(&(PHAR_GLOBALS->phar_fname_map), arch, arch_len, (void **) &pphar); - - if (!pphar && PHAR_G(manifest_cached)) { - zend_hash_find(&cached_phars, arch, arch_len, (void **) &pphar); - } - - efree(arch); - efree(entry); - - return estrndup(trypath, ret_len); - } - return estrdup(trypath); - } - } - continue; - } - } - - if (tsrm_realpath(trypath, resolved_path TSRMLS_CC)) { - return estrdup(resolved_path); - } - } /* end provided path */ - - /* check in calling scripts' current working directory as a fall back case */ - if (zend_is_executing(TSRMLS_C)) { - char *exec_fname = (char*)zend_get_executed_filename(TSRMLS_C); - int exec_fname_length = strlen(exec_fname); - const char *p; - int n = 0; - - while ((--exec_fname_length >= 0) && !IS_SLASH(exec_fname[exec_fname_length])); - if (exec_fname && exec_fname[0] != '[' && - exec_fname_length > 0 && - exec_fname_length + 1 + filename_len + 1 < MAXPATHLEN) { - memcpy(trypath, exec_fname, exec_fname_length + 1); - memcpy(trypath+exec_fname_length + 1, filename, filename_len+1); - - /* search for stream wrapper */ - for (p = trypath; isalnum((int)*p) || *p == '+' || *p == '-' || *p == '.'; ++p, ++n); - - if (n < exec_fname_length - 3 && (*p == ':') && (n > 1) && (!strncmp("//", p+1, 2) || !memcmp("data", trypath, 4))) { - char *actual; - - wrapper = php_stream_locate_url_wrapper(trypath, &actual, STREAM_OPEN_FOR_INCLUDE TSRMLS_CC); - - if (wrapper == &php_plain_files_wrapper) { - /* this should never technically happen, but we'll leave it here for completeness */ - strlcpy(trypath, actual, sizeof(trypath)); - } else if (!wrapper) { - /* if wrapper is NULL, there was a malformed include_path stream wrapper - this also should be impossible */ - return NULL; - } else { - return estrdup(trypath); - } - } - - if (tsrm_realpath(trypath, resolved_path TSRMLS_CC)) { - return estrdup(resolved_path); - } - } - } - - return NULL; -#endif /* PHP 5.2 */ } /* }}} */ @@ -850,11 +628,6 @@ int phar_open_archive_fp(phar_archive_data *phar TSRMLS_DC) /* {{{ */ if (phar_get_pharfp(phar TSRMLS_CC)) { return SUCCESS; } -#if PHP_API_VERSION < 20100412 - if (PG(safe_mode) && (!php_checkuid(phar->fname, NULL, CHECKUID_ALLOW_ONLY_FILE))) { - return FAILURE; - } -#endif if (php_check_open_basedir(phar->fname TSRMLS_CC)) { return FAILURE; @@ -1031,47 +804,12 @@ int phar_open_entry_fp(phar_entry_info *entry, char **error, int follow_links TS } /* }}} */ -#if defined(PHP_VERSION_ID) && PHP_VERSION_ID < 50202 -typedef struct { - char *data; - size_t fpos; - size_t fsize; - size_t smax; - int mode; - php_stream **owner_ptr; -} php_stream_memory_data; -#endif - int phar_create_writeable_entry(phar_archive_data *phar, phar_entry_info *entry, char **error TSRMLS_DC) /* {{{ */ { if (entry->fp_type == PHAR_MOD) { /* already newly created, truncate */ -#if PHP_VERSION_ID >= 50202 php_stream_truncate_set_size(entry->fp, 0); -#else - if (php_stream_is(entry->fp, PHP_STREAM_IS_TEMP)) { - if (php_stream_is(*(php_stream**)entry->fp->abstract, PHP_STREAM_IS_MEMORY)) { - php_stream *inner = *(php_stream**)entry->fp->abstract; - php_stream_memory_data *memfp = (php_stream_memory_data*)inner->abstract; - memfp->fpos = 0; - memfp->fsize = 0; - } else if (php_stream_is(*(php_stream**)entry->fp->abstract, PHP_STREAM_IS_STDIO)) { - php_stream_truncate_set_size(*(php_stream**)entry->fp->abstract, 0); - } else { - if (error) { - spprintf(error, 0, "phar error: file \"%s\" cannot be opened for writing, no truncate support", phar->fname); - } - return FAILURE; - } - } else if (php_stream_is(entry->fp, PHP_STREAM_IS_STDIO)) { - php_stream_truncate_set_size(entry->fp, 0); - } else { - if (error) { - spprintf(error, 0, "phar error: file \"%s\" cannot be opened for writing, no truncate support", phar->fname); - } - return FAILURE; - } -#endif + entry->old_flags = entry->flags; entry->is_modified = 1; phar->is_modified = 1; @@ -1185,6 +923,18 @@ phar_entry_info * phar_open_jit(phar_archive_data *phar, phar_entry_info *entry, } /* }}} */ +PHP_PHAR_API int phar_resolve_alias(char *alias, int alias_len, char **filename, int *filename_len TSRMLS_DC) /* {{{ */ { + phar_archive_data **fd_ptr; + if (PHAR_GLOBALS->phar_alias_map.arBuckets + && SUCCESS == zend_hash_find(&(PHAR_GLOBALS->phar_alias_map), alias, alias_len, (void**)&fd_ptr)) { + *filename = (*fd_ptr)->fname; + *filename_len = (*fd_ptr)->fname_len; + return SUCCESS; + } + return FAILURE; +} +/* }}} */ + int phar_free_alias(phar_archive_data *phar, char *alias, int alias_len TSRMLS_DC) /* {{{ */ { if (phar->refcount || phar->is_persistent) { @@ -1262,8 +1012,10 @@ alias_success: spprintf(error, 0, "alias \"%s\" is already used for archive \"%s\" cannot be overloaded with \"%s\"", alias, (*fd_ptr)->fname, fname); } if (SUCCESS == phar_free_alias(*fd_ptr, alias, alias_len TSRMLS_CC)) { - efree(*error); - *error = NULL; + if (error) { + efree(*error); + *error = NULL; + } } return FAILURE; } @@ -1675,11 +1427,7 @@ static int phar_call_openssl_signverify(int is_sign, php_stream *fp, off_t end, Z_TYPE_P(zdata) = IS_STRING; Z_STRLEN_P(zdata) = end; -#if PHP_MAJOR_VERSION > 5 - if (end != (off_t) php_stream_copy_to_mem(fp, (void **) &(Z_STRVAL_P(zdata)), (size_t) end, 0)) { -#else if (end != (off_t) php_stream_copy_to_mem(fp, &(Z_STRVAL_P(zdata)), (size_t) end, 0)) { -#endif zval_dtor(zdata); zval_dtor(zsig); zval_dtor(zkey); @@ -1691,11 +1439,7 @@ static int phar_call_openssl_signverify(int is_sign, php_stream *fp, off_t end, return FAILURE; } -#if PHP_VERSION_ID < 50300 - if (FAILURE == zend_fcall_info_init(openssl, &fci, &fcc TSRMLS_CC)) { -#else if (FAILURE == zend_fcall_info_init(openssl, 0, &fci, &fcc, NULL, NULL TSRMLS_CC)) { -#endif zval_dtor(zdata); zval_dtor(zsig); zval_dtor(zkey); @@ -1709,13 +1453,6 @@ static int phar_call_openssl_signverify(int is_sign, php_stream *fp, off_t end, fci.param_count = 3; fci.params = zp; -#if PHP_VERSION_ID < 50300 - ++(zdata->refcount); - if (!is_sign) { - ++(zsig->refcount); - } - ++(zkey->refcount); -#else Z_ADDREF_P(zdata); if (is_sign) { Z_SET_ISREF_P(zsig); @@ -1723,7 +1460,7 @@ static int phar_call_openssl_signverify(int is_sign, php_stream *fp, off_t end, Z_ADDREF_P(zsig); } Z_ADDREF_P(zkey); -#endif + fci.retval_ptr_ptr = &retval_ptr; if (FAILURE == zend_call_function(&fci, &fcc TSRMLS_CC)) { @@ -1740,21 +1477,15 @@ static int phar_call_openssl_signverify(int is_sign, php_stream *fp, off_t end, zval_dtor(openssl); efree(openssl); -#if PHP_VERSION_ID < 50300 - --(zdata->refcount); - if (!is_sign) { - --(zsig->refcount); - } - --(zkey->refcount); -#else Z_DELREF_P(zdata); + if (is_sign) { Z_UNSET_ISREF_P(zsig); } else { Z_DELREF_P(zsig); } Z_DELREF_P(zkey); -#endif + zval_dtor(zdata); efree(zdata); zval_dtor(zkey); @@ -2280,11 +2011,7 @@ static int phar_update_cached_entry(void *data, void *argument) /* {{{ */ ALLOC_ZVAL(entry->metadata); *entry->metadata = *t; zval_copy_ctor(entry->metadata); -#if PHP_VERSION_ID < 50300 - entry->metadata->refcount = 1; -#else Z_SET_REFCOUNT_P(entry->metadata, 1); -#endif entry->metadata_str.c = NULL; entry->metadata_str.len = 0; } @@ -2328,11 +2055,7 @@ static void phar_copy_cached_phar(phar_archive_data **pphar TSRMLS_DC) /* {{{ */ ALLOC_ZVAL(phar->metadata); *phar->metadata = *t; zval_copy_ctor(phar->metadata); -#if PHP_VERSION_ID < 50300 - phar->metadata->refcount = 1; -#else Z_SET_REFCOUNT_P(phar->metadata, 1); -#endif } } diff --git a/ext/phar/zip.c b/ext/phar/zip.c index 6ba745e9c..e3b64859b 100644 --- a/ext/phar/zip.c +++ b/ext/phar/zip.c @@ -578,10 +578,6 @@ foundit: /* construct actual offset to file start - local extra_len can be different from central extra_len */ entry.offset = entry.offset_abs = sizeof(local) + entry.header_offset + PHAR_GET_16(local.filename_len) + PHAR_GET_16(local.extra_len); -#if PHP_VERSION_ID < 50207 - /* work around Bug #46147 */ - fp->writepos = fp->readpos = 0; -#endif php_stream_seek(fp, entry.offset, SEEK_SET); /* these next lines should be for php < 5.2.6 after 5.3 filters are fixed */ fp->writepos = 0; @@ -605,9 +601,6 @@ foundit: if (!(entry.uncompressed_filesize = php_stream_copy_to_mem(fp, &actual_alias, entry.uncompressed_filesize, 0)) || !actual_alias) { pefree(entry.filename, entry.is_persistent); -#if PHP_VERSION_ID < 50207 - PHAR_ZIP_FAIL("unable to read in alias, truncated (PHP 5.2.7 and newer has a potential fix for this problem)"); -#endif PHAR_ZIP_FAIL("unable to read in alias, truncated"); } @@ -626,9 +619,6 @@ foundit: if (!(entry.uncompressed_filesize = php_stream_copy_to_mem(fp, &actual_alias, entry.uncompressed_filesize, 0)) || !actual_alias) { pefree(entry.filename, entry.is_persistent); -#if PHP_VERSION_ID < 50207 - PHAR_ZIP_FAIL("unable to read in alias, truncated (PHP 5.2.7 and newer has a potential fix for this problem)"); -#endif PHAR_ZIP_FAIL("unable to read in alias, truncated"); } diff --git a/ext/posix/tests/posix_getgrnam.phpt b/ext/posix/tests/posix_getgrnam.phpt deleted file mode 100644 index 854db4ac1..000000000 --- a/ext/posix/tests/posix_getgrnam.phpt +++ /dev/null @@ -1,19 +0,0 @@ ---TEST-- -posix_getgrnam(): Basic tests ---SKIPIF-- -<?php -if (!extension_loaded('posix')) die('skip - POSIX extension not loaded'); -if (!function_exists('posix_getgrnam')) die('skip posix_getgrnam() not found'); -?> ---FILE-- -<?php - -var_dump(posix_getgrnam(NULL)); -var_dump(posix_getgrnam(1)); -var_dump(posix_getgrnam('')); - -?> ---EXPECT-- -bool(false) -bool(false) -bool(false) diff --git a/ext/posix/tests/posix_getgrnam_basic.phpt b/ext/posix/tests/posix_getgrnam_basic.phpt deleted file mode 100644 index fd5bf2317..000000000 --- a/ext/posix/tests/posix_getgrnam_basic.phpt +++ /dev/null @@ -1,23 +0,0 @@ ---TEST-- -posix_getgrnam(): Basic tests ---SKIPIF-- -<?php -if (!extension_loaded('posix')) die('skip - POSIX extension not loaded'); -if (!function_exists('posix_getgrnam')) die('skip posix_getgrnam() not found'); -?> ---FILE-- -<?php -echo "Basic test of POSIX posix_getgrnam function\n"; - -var_dump(posix_getgrnam(NULL)); -var_dump(posix_getgrnam(1)); -var_dump(posix_getgrnam('')); - -?> -===DONE=== ---EXPECT-- -Basic test of POSIX posix_getgrnam function -bool(false) -bool(false) -bool(false) -===DONE===
\ No newline at end of file diff --git a/ext/posix/tests/posix_getpwnam.phpt b/ext/posix/tests/posix_getpwnam.phpt deleted file mode 100644 index b5de1e4ce..000000000 --- a/ext/posix/tests/posix_getpwnam.phpt +++ /dev/null @@ -1,19 +0,0 @@ ---TEST-- -posix_getpwnam(): Basic tests ---SKIPIF-- -<?php -if (!extension_loaded('posix')) die('skip - POSIX extension not loaded'); -if (!function_exists('posix_getpwnam')) die('skip posix_getpwnam() not found'); -?> ---FILE-- -<?php - -var_dump(posix_getpwnam(1)); -var_dump(posix_getpwnam('')); -var_dump(posix_getpwnam(NULL)); - -?> ---EXPECT-- -bool(false) -bool(false) -bool(false) diff --git a/ext/posix/tests/posix_getpwnam_basic.phpt b/ext/posix/tests/posix_getpwnam_basic.phpt deleted file mode 100644 index d675d6c18..000000000 --- a/ext/posix/tests/posix_getpwnam_basic.phpt +++ /dev/null @@ -1,23 +0,0 @@ ---TEST-- -posix_getpwnam(): Basic tests ---SKIPIF-- -<?php -if (!extension_loaded('posix')) die('skip - POSIX extension not loaded'); -if (!function_exists('posix_getpwnam')) die('skip posix_getpwnam() not found'); -?> ---FILE-- -<?php -echo "Basic test of POSIX posix_getpwnam function\n"; - -var_dump(posix_getpwnam(1)); -var_dump(posix_getpwnam('')); -var_dump(posix_getpwnam(NULL)); - -?> -===DONE==== ---EXPECT-- -Basic test of POSIX posix_getpwnam function -bool(false) -bool(false) -bool(false) -===DONE==== diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c index 0ac4c2ed7..a7a5071c0 100644 --- a/ext/soap/php_sdl.c +++ b/ext/soap/php_sdl.c @@ -2644,16 +2644,17 @@ static sdlAttributePtr make_persistent_sdl_attribute(sdlAttributePtr attr, HashT zend_hash_internal_pointer_reset(pattr->extraAttributes); while (zend_hash_get_current_data(attr->extraAttributes, (void**)&tmp) == SUCCESS) { - pextra = malloc(sizeof(sdlExtraAttribute)); - memset(pextra, 0, sizeof(sdlExtraAttribute)); - if ((*tmp)->ns) { - pextra->ns = strdup((*tmp)->ns); - } - if ((*tmp)->val) { - pextra->val = strdup((*tmp)->val); - } + if (zend_hash_get_current_key_ex(attr->extraAttributes, &key, &key_len, &index, 0, NULL) == HASH_KEY_IS_STRING) { + pextra = malloc(sizeof(sdlExtraAttribute)); + memset(pextra, 0, sizeof(sdlExtraAttribute)); - if (zend_hash_get_current_key_ex(attr->extraAttributes, &key, &key_len, &index, 0, NULL) == HASH_KEY_IS_STRING) { + if ((*tmp)->ns) { + pextra->ns = strdup((*tmp)->ns); + } + if ((*tmp)->val) { + pextra->val = strdup((*tmp)->val); + } + zend_hash_add(pattr->extraAttributes, key, key_len, (void*)&pextra, sizeof(sdlExtraAttributePtr), NULL); } diff --git a/ext/sockets/conversions.c b/ext/sockets/conversions.c index ed55ed52f..d81484521 100644 --- a/ext/sockets/conversions.c +++ b/ext/sockets/conversions.c @@ -1257,7 +1257,7 @@ void to_zval_read_msghdr(const char *msghdr_c, zval *zv, res_context *ctx) /* CONVERSIONS for if_index */ static void from_zval_write_ifindex(const zval *zv, char *uinteger, ser_context *ctx) { - unsigned ret; + unsigned ret = 0; zval lzval = zval_used_for_init; if (Z_TYPE_P(zv) == IS_LONG) { diff --git a/ext/spl/tests/SplFileObject_getflags_basic.phpt b/ext/spl/tests/SplFileObject_getflags_basic.phpt index 5addadf38..88cf6861a 100644 --- a/ext/spl/tests/SplFileObject_getflags_basic.phpt +++ b/ext/spl/tests/SplFileObject_getflags_basic.phpt @@ -7,16 +7,16 @@ Erwin Poeze <erwin.poeze@gmail.com> --FILE-- <?php -file_put_contents('testdata.csv', 'eerste;tweede;derde'); +file_put_contents('SplFileObject_getflags_basic.csv', 'eerste;tweede;derde'); -$fo = new SplFileObject('testdata.csv'); +$fo = new SplFileObject('SplFileObject_getflags_basic.csv'); $fo->setFlags(SplFileObject::DROP_NEW_LINE); var_dump($fo->getFlags()); ?> --CLEAN-- <?php -unlink('testdata.csv'); +unlink('SplFileObject_getflags_basic.csv'); ?> --EXPECT-- int(1) diff --git a/ext/spl/tests/SplFileObject_getflags_error001.phpt b/ext/spl/tests/SplFileObject_getflags_error001.phpt index 1602f8888..ca53c857e 100644 --- a/ext/spl/tests/SplFileObject_getflags_error001.phpt +++ b/ext/spl/tests/SplFileObject_getflags_error001.phpt @@ -7,10 +7,10 @@ Erwin Poeze <erwin.poeze@gmail.com> --FILE-- <?php -file_put_contents('testdata.csv', 'eerste;tweede;derde'); +file_put_contents('SplFileObject_getflags_error001.csv', 'eerste;tweede;derde'); -$fo = new SplFileObject('testdata.csv'); +$fo = new SplFileObject('SplFileObject_getflags_error001.csv'); $fo->setFlags(SplFileObject::READ_CSV); $fo->setFlags(SplFileObject::DROP_NEW_LINE); @@ -20,7 +20,7 @@ var_dump($fo->getFlags()); ?> --CLEAN-- <?php -unlink('testdata.csv'); +unlink('SplFileObject_getflags_error001.csv'); ?> --EXPECT-- int(1) diff --git a/ext/spl/tests/SplFileObject_getflags_error002.phpt b/ext/spl/tests/SplFileObject_getflags_error002.phpt index e2c8255f4..00fd351db 100644 --- a/ext/spl/tests/SplFileObject_getflags_error002.phpt +++ b/ext/spl/tests/SplFileObject_getflags_error002.phpt @@ -5,9 +5,9 @@ Erwin Poeze <erwin.poeze@gmail.com> --FILE-- <?php -file_put_contents('testdata.csv', 'eerste;tweede;derde'); +file_put_contents('SplFileObject_getflags_error002.csv', 'eerste;tweede;derde'); -$fo = new SplFileObject('testdata.csv'); +$fo = new SplFileObject('SplFileObject_getflags_error002.csv'); $fo->setFlags(SplFileObject::READ_CSV); $fo->getFlags('fake'); @@ -15,7 +15,7 @@ $fo->getFlags('fake'); ?> --CLEAN-- <?php -unlink('testdata.csv'); +unlink('SplFileObject_getflags_error002.csv'); ?> --EXPECTF-- Warning: SplFileObject::getFlags() expects exactly 0 parameters, 1 given in %s on line %d diff --git a/ext/spl/tests/SplFileObject_rewind_error001.phpt b/ext/spl/tests/SplFileObject_rewind_error001.phpt index ac536a0a4..5f2379aa1 100644 --- a/ext/spl/tests/SplFileObject_rewind_error001.phpt +++ b/ext/spl/tests/SplFileObject_rewind_error001.phpt @@ -7,16 +7,16 @@ Erwin Poeze <erwin.poeze@gmail.com> --FILE-- <?php -file_put_contents('testdata.csv', 'eerste;tweede;derde'); +file_put_contents('SplFileObject_rewind_error001.csv', 'eerste;tweede;derde'); -$fo = new SplFileObject('testdata.csv'); +$fo = new SplFileObject('SplFileObject_rewind_error001.csv'); $fo->rewind( "invalid" ); ?> --CLEAN-- <?php -unlink('testdata.csv'); +unlink('SplFileObject_rewind_error001.csv'); ?> --EXPECTF-- Warning: SplFileObject::rewind() expects exactly 0 parameters, 1 given in %s on line %d diff --git a/ext/standard/array.c b/ext/standard/array.c index 51972033e..360a691d3 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -2222,13 +2222,14 @@ PHPAPI int php_array_merge(HashTable *dest, HashTable *src, int recursive TSRMLS case HASH_KEY_IS_STRING: if (recursive && zend_hash_find(dest, string_key, string_key_len, (void **)&dest_entry) == SUCCESS) { HashTable *thash = Z_TYPE_PP(dest_entry) == IS_ARRAY ? Z_ARRVAL_PP(dest_entry) : NULL; + zval *src_zval; + zval *tmp = NULL; if ((thash && thash->nApplyCount > 1) || (*src_entry == *dest_entry && Z_ISREF_PP(dest_entry) && (Z_REFCOUNT_PP(dest_entry) % 2))) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "recursion detected"); return 0; } SEPARATE_ZVAL(dest_entry); - SEPARATE_ZVAL(src_entry); if (Z_TYPE_PP(dest_entry) == IS_NULL) { convert_to_array_ex(dest_entry); @@ -2236,23 +2237,34 @@ PHPAPI int php_array_merge(HashTable *dest, HashTable *src, int recursive TSRMLS } else { convert_to_array_ex(dest_entry); } - if (Z_TYPE_PP(src_entry) == IS_NULL) { - convert_to_array_ex(src_entry); - add_next_index_null(*src_entry); + if (Z_TYPE_PP(src_entry) == IS_OBJECT) { + ALLOC_ZVAL(src_zval); + INIT_PZVAL_COPY(src_zval, *src_entry); + zval_copy_ctor(src_zval); + convert_to_array(src_zval); + tmp = src_zval; } else { - convert_to_array_ex(src_entry); + src_zval = *src_entry; } - if (thash) { - thash->nApplyCount++; - } - if (!php_array_merge(Z_ARRVAL_PP(dest_entry), Z_ARRVAL_PP(src_entry), recursive TSRMLS_CC)) { + if (Z_TYPE_P(src_zval) == IS_ARRAY) { + if (thash) { + thash->nApplyCount++; + } + if (!php_array_merge(Z_ARRVAL_PP(dest_entry), Z_ARRVAL_P(src_zval), recursive TSRMLS_CC)) { + if (thash) { + thash->nApplyCount--; + } + return 0; + } if (thash) { thash->nApplyCount--; } - return 0; + } else { + Z_ADDREF_PP(src_entry); + zend_hash_next_index_insert(Z_ARRVAL_PP(dest_entry), &src_zval, sizeof(zval *), NULL); } - if (thash) { - thash->nApplyCount--; + if (tmp) { + zval_ptr_dtor(&tmp); } } else { Z_ADDREF_PP(src_entry); @@ -2356,7 +2368,6 @@ static void php_array_merge_or_replace_wrapper(INTERNAL_FUNCTION_PARAMETERS, int array_init_size(return_value, init_size); for (i = 0; i < argc; i++) { - SEPARATE_ZVAL(args[i]); if (!replace) { php_array_merge(Z_ARRVAL_P(return_value), Z_ARRVAL_PP(args[i]), recursive TSRMLS_CC); } else if (recursive && i > 0) { /* First array will be copied directly instead */ diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index eca7d9036..b4128e066 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -3639,6 +3639,7 @@ PHP_MINIT_FUNCTION(basic) /* {{{ */ BASIC_ADD_SUBMODULE(dl) BASIC_ADD_SUBMODULE(mail) + BASIC_ADD_SUBMODULE(streams) BASIC_MINIT_SUBMODULE(file) BASIC_MINIT_SUBMODULE(pack) BASIC_MINIT_SUBMODULE(browscap) diff --git a/ext/standard/php_string.h b/ext/standard/php_string.h index 65219f257..1ce98ee07 100644 --- a/ext/standard/php_string.h +++ b/ext/standard/php_string.h @@ -156,7 +156,7 @@ PHPAPI char *php_strerror(int errnum); # define php_mblen(ptr, len) 1 #else # if defined(_REENTRANT) && defined(HAVE_MBRLEN) && defined(HAVE_MBSTATE_T) -# define php_mblen(ptr, len) ((ptr) == NULL ? mbsinit(&BG(mblen_state)): (int)mbrlen(ptr, len, &BG(mblen_state))) +# define php_mblen(ptr, len) ((ptr) == NULL ? memset(&BG(mblen_state), 0, sizeof(BG(mblen_state))): (int)mbrlen(ptr, len, &BG(mblen_state))) # else # define php_mblen(ptr, len) mblen(ptr, len) # endif diff --git a/ext/standard/tests/file/disk_free_space_basic.phpt b/ext/standard/tests/file/disk_free_space_basic.phpt index 7ea8d3615..200e92ab4 100644 --- a/ext/standard/tests/file/disk_free_space_basic.phpt +++ b/ext/standard/tests/file/disk_free_space_basic.phpt @@ -1,5 +1,9 @@ --TEST-- Test disk_free_space and its alias diskfreespace() functions : basic functionality +--SKIPIF-- +<?php +if (getenv("TRAVIS") === "true") die("skip inaccurate on TravisCI"); +?> --INI-- memory_limit=32M --FILE-- @@ -33,7 +37,7 @@ echo "\n Free Space after writing to a file\n"; $space2 = disk_free_space($file_path.$dir); var_dump( $space2 ); -if( $space1 > $space2 ) +if($space1 > $space2 ) echo "\n Free Space Value Is Correct\n"; else echo "\n Free Space Value Is Incorrect\n"; diff --git a/ext/standard/tests/file/fgets_socket_variation1.phpt b/ext/standard/tests/file/fgets_socket_variation1.phpt index 57944d8b5..429ad67d6 100644 --- a/ext/standard/tests/file/fgets_socket_variation1.phpt +++ b/ext/standard/tests/file/fgets_socket_variation1.phpt @@ -5,11 +5,17 @@ Dave Kelsey <d_kelsey@uk.ibm.com> --FILE-- <?php -/* Setup socket server */ -$server = stream_socket_server('tcp://127.0.0.1:31337'); +for ($i=0; $i<100; $i++) { + $port = rand(10000, 65000); + /* Setup socket server */ + $server = @stream_socket_server("tcp://127.0.0.1:$port"); + if ($server) { + break; + } +} /* Connect to it */ -$client = fsockopen('tcp://127.0.0.1:31337'); +$client = fsockopen("tcp://127.0.0.1:$port"); if (!$client) { die("Unable to create socket"); diff --git a/ext/standard/tests/file/fgets_socket_variation2.phpt b/ext/standard/tests/file/fgets_socket_variation2.phpt index 350083713..da1f0b47a 100644 --- a/ext/standard/tests/file/fgets_socket_variation2.phpt +++ b/ext/standard/tests/file/fgets_socket_variation2.phpt @@ -16,11 +16,17 @@ for ($i = 0; $i < 1000; $i++) { } fclose($fd); -/* Setup socket server */ -$server = stream_socket_server('tcp://127.0.0.1:31337'); +for ($i=0; $i<100; $i++) { + $port = rand(10000, 65000); + /* Setup socket server */ + $server = @stream_socket_server("tcp://127.0.0.1:$port"); + if ($server) { + break; + } +} /* Connect to it */ -$client = fsockopen('tcp://127.0.0.1:31337'); +$client = fsockopen("tcp://127.0.0.1:$port"); if (!$client) { die("Unable to create socket"); diff --git a/ext/standard/tests/file/file_put_contents_variation9.phpt b/ext/standard/tests/file/file_put_contents_variation9.phpt index 7ad09c449..79a42fe9b 100644 --- a/ext/standard/tests/file/file_put_contents_variation9.phpt +++ b/ext/standard/tests/file/file_put_contents_variation9.phpt @@ -17,10 +17,10 @@ if(substr(PHP_OS, 0, 3) == "WIN") echo "*** Testing file_put_contents() : usage variation ***\n"; -$filename = dirname(__FILE__).'/fileGetContentsVar9.tmp'; -$softlink = dirname(__FILE__).'/fileGetContentsVar9.SoftLink'; -$hardlink = dirname(__FILE__).'/fileGetContentsVar9.HardLink'; -$chainlink = dirname(__FILE__).'/fileGetContentsVar9.ChainLink'; +$filename = dirname(__FILE__).'/filePutContentsVar9.tmp'; +$softlink = dirname(__FILE__).'/filePutContentsVar9.SoftLink'; +$hardlink = dirname(__FILE__).'/filePutContentsVar9.HardLink'; +$chainlink = dirname(__FILE__).'/filePutContentsVar9.ChainLink'; // link files even though it original file doesn't exist yet diff --git a/ext/standard/tests/file/fread_socket_variation1.phpt b/ext/standard/tests/file/fread_socket_variation1.phpt index a615d2f41..d65565d3c 100644 --- a/ext/standard/tests/file/fread_socket_variation1.phpt +++ b/ext/standard/tests/file/fread_socket_variation1.phpt @@ -3,13 +3,20 @@ Testing fread() on a TCP server socket --FILE-- <?php -$tcp_socket = stream_socket_server('tcp://127.0.0.1:31337'); +for ($i=0; $i<100; $i++) { + $port = rand(10000, 65000); + /* Setup socket server */ + $server = @stream_socket_server("tcp://127.0.0.1:$port"); + if ($server) { + break; + } +} -socket_set_timeout($tcp_socket, 0, 1000); +socket_set_timeout($server, 0, 1000); -var_dump(fread($tcp_socket, 1)); +var_dump(fread($server, 1)); -fclose($tcp_socket); +fclose($server); ?> --EXPECT-- diff --git a/ext/standard/tests/general_functions/bug41445_1.phpt b/ext/standard/tests/general_functions/bug41445_1.phpt index e65e7afcc..4698de436 100644 --- a/ext/standard/tests/general_functions/bug41445_1.phpt +++ b/ext/standard/tests/general_functions/bug41445_1.phpt @@ -3,7 +3,7 @@ Bug #41445 (parse_ini_file() function parses octal numbers in section names) - 2 --FILE-- <?php -$file = dirname(__FILE__)."/bug41445.ini"; +$file = dirname(__FILE__)."/bug41445_1.ini"; $data = <<<DATA [2454.33] diff --git a/ext/standard/tests/general_functions/var_export-locale.phpt b/ext/standard/tests/general_functions/var_export-locale.phpt index 37142cf34..3cbebe9c7 100644 --- a/ext/standard/tests/general_functions/var_export-locale.phpt +++ b/ext/standard/tests/general_functions/var_export-locale.phpt @@ -784,15 +784,15 @@ string(20) "array ( Iteration 13 array ( 0 => 10.5, - 1 => 5.6, + 1 => 5.5999999999999996, ) array ( 0 => 10.5, - 1 => 5.6, + 1 => 5.5999999999999996, ) -string(34) "array ( +string(49) "array ( 0 => 10.5, - 1 => 5.6, + 1 => 5.5999999999999996, )" diff --git a/ext/standard/tests/general_functions/var_export_basic3.phpt b/ext/standard/tests/general_functions/var_export_basic3.phpt index 299721591..9e27d9042 100644 --- a/ext/standard/tests/general_functions/var_export_basic3.phpt +++ b/ext/standard/tests/general_functions/var_export_basic3.phpt @@ -96,9 +96,9 @@ string(1) "0" -- Iteration: -0.1 -- --0.1 --0.1 -string(4) "-0.1" +-0.10000000000000001 +-0.10000000000000001 +string(20) "-0.10000000000000001" -- Iteration: 10.0000000000000000005 -- @@ -120,9 +120,9 @@ string(6) "100000" -- Iteration: 1e-5 -- -1.0E-5 -1.0E-5 -string(6) "1.0E-5" +1.0000000000000001E-5 +1.0000000000000001E-5 +string(21) "1.0000000000000001E-5" -- Iteration: 1e+5 -- @@ -144,9 +144,9 @@ string(6) "100000" -- Iteration: 1E-5 -- -1.0E-5 -1.0E-5 -string(6) "1.0E-5" +1.0000000000000001E-5 +1.0000000000000001E-5 +string(21) "1.0000000000000001E-5" -- Iteration: .5e+7 -- @@ -156,20 +156,20 @@ string(7) "5000000" -- Iteration: .6e-19 -- -6.0E-20 -6.0E-20 -string(7) "6.0E-20" +6.0000000000000006E-20 +6.0000000000000006E-20 +string(22) "6.0000000000000006E-20" -- Iteration: .05E+44 -- -5.0E+42 -5.0E+42 -string(7) "5.0E+42" +5.0000000000000001E+42 +5.0000000000000001E+42 +string(22) "5.0000000000000001E+42" -- Iteration: .0034E-30 -- -3.4E-33 -3.4E-33 -string(7) "3.4E-33" +3.4000000000000001E-33 +3.4000000000000001E-33 +string(22) "3.4000000000000001E-33" ===DONE=== diff --git a/ext/standard/tests/general_functions/var_export_basic5.phpt b/ext/standard/tests/general_functions/var_export_basic5.phpt index 96b3f54cc..1512fa837 100644 --- a/ext/standard/tests/general_functions/var_export_basic5.phpt +++ b/ext/standard/tests/general_functions/var_export_basic5.phpt @@ -233,15 +233,15 @@ string(20) "array ( --Iteration: array(10.5, 5.6) -- array ( 0 => 10.5, - 1 => 5.6, + 1 => 5.5999999999999996, ) array ( 0 => 10.5, - 1 => 5.6, + 1 => 5.5999999999999996, ) -string(34) "array ( +string(49) "array ( 0 => 10.5, - 1 => 5.6, + 1 => 5.5999999999999996, )" @@ -274,4 +274,4 @@ string(41) "array ( 1 => 'test', )" -===DONE===
\ No newline at end of file +===DONE=== diff --git a/ext/standard/tests/network/fsockopen_basic.phpt b/ext/standard/tests/network/fsockopen_basic.phpt index 3ec936633..227762f89 100644 --- a/ext/standard/tests/network/fsockopen_basic.phpt +++ b/ext/standard/tests/network/fsockopen_basic.phpt @@ -11,12 +11,18 @@ Test fsockopen() function : basic functionality echo "*** Testing fsockopen() : basic functionality ***\n"; echo "Open a server socket\n"; -$server = stream_socket_server('tcp://127.0.0.1:31337'); +for ($i=0; $i<100; $i++) { + $port = rand(10000, 65000); + /* Setup socket server */ + $server = @stream_socket_server("tcp://127.0.0.1:$port"); + if ($server) { + break; + } +} // Initialise all required variables $hostname = 'tcp://127.0.0.1'; // loopback address -$port = 31337; $errno = null; $errstr = null; $timeout = 1.5; diff --git a/ext/standard/tests/network/fsockopen_variation1.phpt b/ext/standard/tests/network/fsockopen_variation1.phpt index 2e5f8d9ad..bb1b0f15c 100644 --- a/ext/standard/tests/network/fsockopen_variation1.phpt +++ b/ext/standard/tests/network/fsockopen_variation1.phpt @@ -4,11 +4,17 @@ testing fsockopen without a protocol string <?php echo "Open a server socket\n"; -$server = stream_socket_server('tcp://127.0.0.1:31337'); +for ($i=0; $i<100; $i++) { + $port = rand(10000, 65000); + /* Setup socket server */ + $server = @stream_socket_server("tcp://127.0.0.1:$port"); + if ($server) { + break; + } +} echo "\nCalling fsockopen() without a protocol in the hostname string:\n"; $hostname = '127.0.0.1'; -$port = '31337'; $client = fsockopen($hostname, $port); var_dump($client); fclose($client); diff --git a/ext/standard/tests/network/shutdown.phpt b/ext/standard/tests/network/shutdown.phpt index f9ab66476..1ce77fb80 100644 --- a/ext/standard/tests/network/shutdown.phpt +++ b/ext/standard/tests/network/shutdown.phpt @@ -6,14 +6,22 @@ stream_socket_shutdown() test on IPv4 TCP Loopback ?> --FILE-- <?php - /* Setup socket server */ - $server = stream_socket_server('tcp://127.0.0.1:31337'); - if (!$server) { + + for ($i=0; $i<100; $i++) { + $port = rand(10000, 65000); + /* Setup socket server */ + $server = @stream_socket_server("tcp://127.0.0.1:$port"); + if ($server) { + break; + } + } + +if (!$server) { die('Unable to create AF_INET socket [server]'); } /* Connect and send request 1 */ - $client1 = stream_socket_client('tcp://127.0.0.1:31337'); + $client1 = stream_socket_client("tcp://127.0.0.1:$port"); if (!$client1) { die('Unable to create AF_INET socket [client]'); } @@ -22,7 +30,7 @@ stream_socket_shutdown() test on IPv4 TCP Loopback @fwrite($client1, "Error 1\n"); /* Connect and send request 2 */ - $client2 = stream_socket_client('tcp://127.0.0.1:31337'); + $client2 = stream_socket_client("tcp://127.0.0.1:$port"); if (!$client2) { die('Unable to create AF_INET socket [client]'); } diff --git a/ext/standard/tests/network/socket_get_status_basic.phpt b/ext/standard/tests/network/socket_get_status_basic.phpt index f72662b16..46215f983 100644 --- a/ext/standard/tests/network/socket_get_status_basic.phpt +++ b/ext/standard/tests/network/socket_get_status_basic.phpt @@ -3,9 +3,17 @@ Testing socket_get_status() --FILE-- <?php -$tcp_socket = stream_socket_server('tcp://127.0.0.1:31337'); -var_dump(socket_get_status($tcp_socket)); -fclose($tcp_socket); +for ($i=0; $i<100; $i++) { + $port = rand(10000, 65000); + /* Setup socket server */ + $server = @stream_socket_server("tcp://127.0.0.1:$port"); + if ($server) { + break; + } +} + +var_dump(socket_get_status($server)); +fclose($server); ?> --EXPECTF-- diff --git a/ext/standard/tests/network/tcp4loop.phpt b/ext/standard/tests/network/tcp4loop.phpt index afd955918..a163cd9b3 100644 --- a/ext/standard/tests/network/tcp4loop.phpt +++ b/ext/standard/tests/network/tcp4loop.phpt @@ -2,14 +2,21 @@ Streams Based IPv4 TCP Loopback test --FILE-- <?php # vim:ft=php: - /* Setup socket server */ - $server = stream_socket_server('tcp://127.0.0.1:31337'); + + for ($i=0; $i<100; $i++) { + $port = rand(10000, 65000); + /* Setup socket server */ + $server = @stream_socket_server("tcp://127.0.0.1:$port"); + if ($server) { + break; + } + } if (!$server) { die('Unable to create AF_INET socket [server]'); } /* Connect to it */ - $client = stream_socket_client('tcp://127.0.0.1:31337'); + $client = stream_socket_client("tcp://127.0.0.1:$port"); if (!$client) { die('Unable to create AF_INET socket [client]'); } diff --git a/ext/standard/tests/network/tcp6loop.phpt b/ext/standard/tests/network/tcp6loop.phpt index 3f28cd443..30b1d7bcd 100644 --- a/ext/standard/tests/network/tcp6loop.phpt +++ b/ext/standard/tests/network/tcp6loop.phpt @@ -10,14 +10,22 @@ Streams Based IPv6 TCP Loopback test ?> --FILE-- <?php - /* Setup socket server */ - $server = stream_socket_server('tcp://[::1]:31337'); + + for ($i=0; $i<100; $i++) { + $port = rand(10000, 65000); + /* Setup socket server */ + $server = @stream_socket_server("tcp://[::1]:$port"); + if ($server) { + break; + } + } + if (!$server) { die('Unable to create AF_INET6 socket [server]'); } /* Connect to it */ - $client = stream_socket_client('tcp://[::1]:31337'); + $client = stream_socket_client("tcp://[::1]:$port"); if (!$client) { die('Unable to create AF_INET6 socket [client]'); } diff --git a/ext/standard/tests/network/udp6loop.phpt b/ext/standard/tests/network/udp6loop.phpt index 5fcf7a7f4..8241d80ba 100644 --- a/ext/standard/tests/network/udp6loop.phpt +++ b/ext/standard/tests/network/udp6loop.phpt @@ -16,14 +16,22 @@ Streams Based IPv6 UDP Loopback test ?> --FILE-- <?php - /* Setup socket server */ - $server = stream_socket_server('udp://[::1]:31337', $errno, $errstr, STREAM_SERVER_BIND); + + for ($i=0; $i<100; $i++) { + $port = rand(10000, 65000); + /* Setup socket server */ + $server = @stream_socket_server("udp://[::1]:$port", $errno, $errstr, STREAM_SERVER_BIND); + if ($server) { + break; + } + } + if (!$server) { die('Unable to create AF_INET6 socket [server]'); } /* Connect to it */ - $client = stream_socket_client('udp://[::1]:31337'); + $client = stream_socket_client("udp://[::1]:$port"); if (!$client) { die('Unable to create AF_INET6 socket [client]'); } diff --git a/ext/standard/tests/streams/stream_set_timeout_error.phpt b/ext/standard/tests/streams/stream_set_timeout_error.phpt index c1d4d1406..814257dd9 100644 --- a/ext/standard/tests/streams/stream_set_timeout_error.phpt +++ b/ext/standard/tests/streams/stream_set_timeout_error.phpt @@ -13,10 +13,16 @@ echo "*** Testing stream_set_timeout() : error conditions ***\n"; //Test stream_set_timeout with one more than the expected number of arguments echo "\n-- Testing stream_set_timeout() function with more than expected no. of arguments --\n"; -/* Setup socket server */ -$server = stream_socket_server('tcp://127.0.0.1:31337'); +for ($i=0; $i<100; $i++) { + $port = rand(10000, 65000); + /* Setup socket server */ + $server = @stream_socket_server("tcp://127.0.0.1:$port"); + if ($server) { + break; + } +} /* Connect to it */ -$client = fsockopen('tcp://127.0.0.1:31337'); +$client = fsockopen("tcp://127.0.0.1:$port"); $seconds = 10; $microseconds = 10; diff --git a/ext/standard/tests/strings/bug65947.phpt b/ext/standard/tests/strings/bug65947.phpt new file mode 100644 index 000000000..956aa6049 --- /dev/null +++ b/ext/standard/tests/strings/bug65947.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug #65947 (basename is no more working after fgetcsv in certain situation) +--SKIPIF-- +<?php if (!PHP_ZTS) { print "skip only for zts build"; } +--FILE-- +<?php +$filename = 'test.toto'; +// é in ISO-8859-1 +$csv = base64_decode('6Q=='); +$adata = str_getcsv($csv,";"); +$b2 = basename($filename); +if ($filename != $b2) + print "BUG"; +else + print "OKEY"; +--EXPECTF-- +OKEY diff --git a/ext/standard/tests/strings/vfprintf_basic1.phpt b/ext/standard/tests/strings/vfprintf_basic1.phpt index 3129d4fcc..84d8ad101 100644 --- a/ext/standard/tests/strings/vfprintf_basic1.phpt +++ b/ext/standard/tests/strings/vfprintf_basic1.phpt @@ -20,7 +20,7 @@ $arg3 = array("one","two","three"); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_basic1.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_basic2.phpt b/ext/standard/tests/strings/vfprintf_basic2.phpt index b758caeec..36d6577bb 100644 --- a/ext/standard/tests/strings/vfprintf_basic2.phpt +++ b/ext/standard/tests/strings/vfprintf_basic2.phpt @@ -23,7 +23,7 @@ $arg2 = array(111,222); $arg3 = array(111,222,333); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_basic2.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_basic3.phpt b/ext/standard/tests/strings/vfprintf_basic3.phpt index b675b3db8..565079dc6 100644 --- a/ext/standard/tests/strings/vfprintf_basic3.phpt +++ b/ext/standard/tests/strings/vfprintf_basic3.phpt @@ -24,7 +24,7 @@ $arg2 = array(11.11,22.22); $arg3 = array(11.11,22.22,33.33); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_basic3.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_basic4.phpt b/ext/standard/tests/strings/vfprintf_basic4.phpt index 1595f034b..e653f6330 100644 --- a/ext/standard/tests/strings/vfprintf_basic4.phpt +++ b/ext/standard/tests/strings/vfprintf_basic4.phpt @@ -19,7 +19,7 @@ $arg2 = array(TRUE,FALSE); $arg3 = array(TRUE,FALSE,TRUE); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_basic4.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_basic5.phpt b/ext/standard/tests/strings/vfprintf_basic5.phpt index a080c9e6c..84fbe33f1 100644 --- a/ext/standard/tests/strings/vfprintf_basic5.phpt +++ b/ext/standard/tests/strings/vfprintf_basic5.phpt @@ -19,7 +19,7 @@ $arg2 = array(65,66); $arg3 = array(65,66,67); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_basic5.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_basic6.phpt b/ext/standard/tests/strings/vfprintf_basic6.phpt index ed88a2832..6c1bbf02a 100644 --- a/ext/standard/tests/strings/vfprintf_basic6.phpt +++ b/ext/standard/tests/strings/vfprintf_basic6.phpt @@ -20,7 +20,7 @@ $arg2 = array(1000,2000); $arg3 = array(1000,2000,3000); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_basic6.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_basic7.phpt b/ext/standard/tests/strings/vfprintf_basic7.phpt index 45544a39e..f4c11edc1 100644 --- a/ext/standard/tests/strings/vfprintf_basic7.phpt +++ b/ext/standard/tests/strings/vfprintf_basic7.phpt @@ -23,7 +23,7 @@ $arg2 = array(-1111,-1234567); $arg3 = array(-1111,-1234567,-2345432); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_basic7.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_basic7_64bit.phpt b/ext/standard/tests/strings/vfprintf_basic7_64bit.phpt index 77fae2c09..14cd31ddd 100644 --- a/ext/standard/tests/strings/vfprintf_basic7_64bit.phpt +++ b/ext/standard/tests/strings/vfprintf_basic7_64bit.phpt @@ -23,7 +23,7 @@ $arg2 = array(-1111,-1234567); $arg3 = array(-1111,-1234567,-2345432); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_basic7_64bit.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_basic8.phpt b/ext/standard/tests/strings/vfprintf_basic8.phpt index 6fe215154..bf7eb96ad 100644 --- a/ext/standard/tests/strings/vfprintf_basic8.phpt +++ b/ext/standard/tests/strings/vfprintf_basic8.phpt @@ -19,7 +19,7 @@ $arg2 = array(021,0347); $arg3 = array(021,0347,05678); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_basic8.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_basic9.phpt b/ext/standard/tests/strings/vfprintf_basic9.phpt index 8294c8482..080e52bb6 100644 --- a/ext/standard/tests/strings/vfprintf_basic9.phpt +++ b/ext/standard/tests/strings/vfprintf_basic9.phpt @@ -24,7 +24,7 @@ $arg2 = array(11,132); $arg3 = array(11,132,177); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_basic9.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation10.phpt b/ext/standard/tests/strings/vfprintf_variation10.phpt Binary files differindex e2c066eff..bb00e7038 100644 --- a/ext/standard/tests/strings/vfprintf_variation10.phpt +++ b/ext/standard/tests/strings/vfprintf_variation10.phpt diff --git a/ext/standard/tests/strings/vfprintf_variation11.phpt b/ext/standard/tests/strings/vfprintf_variation11.phpt index 45f1f61fa..4bc38851d 100644 --- a/ext/standard/tests/strings/vfprintf_variation11.phpt +++ b/ext/standard/tests/strings/vfprintf_variation11.phpt @@ -45,7 +45,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation11.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt index d6549846b..a55297999 100644 --- a/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt +++ b/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt @@ -45,7 +45,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation11_64bit.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation12.phpt b/ext/standard/tests/strings/vfprintf_variation12.phpt index e95fd5bb7..f0fa354ea 100644 --- a/ext/standard/tests/strings/vfprintf_variation12.phpt +++ b/ext/standard/tests/strings/vfprintf_variation12.phpt @@ -68,7 +68,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation12.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation12_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation12_64bit.phpt index a1e57bc42..fe786d3f4 100644 --- a/ext/standard/tests/strings/vfprintf_variation12_64bit.phpt +++ b/ext/standard/tests/strings/vfprintf_variation12_64bit.phpt @@ -68,7 +68,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation12_64bit.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation13.phpt b/ext/standard/tests/strings/vfprintf_variation13.phpt index 245feb5a2..fd3424242 100644 --- a/ext/standard/tests/strings/vfprintf_variation13.phpt +++ b/ext/standard/tests/strings/vfprintf_variation13.phpt @@ -45,7 +45,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation13.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt index bf6fcb5ec..68baed853 100644 --- a/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt +++ b/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt @@ -45,7 +45,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation13_64bit.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation14.phpt b/ext/standard/tests/strings/vfprintf_variation14.phpt index c714d8975..0173a27fb 100644 --- a/ext/standard/tests/strings/vfprintf_variation14.phpt +++ b/ext/standard/tests/strings/vfprintf_variation14.phpt @@ -68,7 +68,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation14.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation14_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation14_64bit.phpt index 930ee3d03..fb34befd3 100644 --- a/ext/standard/tests/strings/vfprintf_variation14_64bit.phpt +++ b/ext/standard/tests/strings/vfprintf_variation14_64bit.phpt @@ -68,7 +68,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation14_64bit.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation15.phpt b/ext/standard/tests/strings/vfprintf_variation15.phpt index 95667b5a8..19e319a55 100644 --- a/ext/standard/tests/strings/vfprintf_variation15.phpt +++ b/ext/standard/tests/strings/vfprintf_variation15.phpt @@ -38,7 +38,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation15.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation15_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation15_64bit.phpt index d2e331c2d..7bb0d150e 100644 --- a/ext/standard/tests/strings/vfprintf_variation15_64bit.phpt +++ b/ext/standard/tests/strings/vfprintf_variation15_64bit.phpt @@ -38,7 +38,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation15_64bit.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation16.phpt b/ext/standard/tests/strings/vfprintf_variation16.phpt index 21630521b..4995ab02a 100644 --- a/ext/standard/tests/strings/vfprintf_variation16.phpt +++ b/ext/standard/tests/strings/vfprintf_variation16.phpt @@ -61,7 +61,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation16.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation16_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation16_64bit.phpt index 381e67c33..16d062401 100644 --- a/ext/standard/tests/strings/vfprintf_variation16_64bit.phpt +++ b/ext/standard/tests/strings/vfprintf_variation16_64bit.phpt @@ -61,7 +61,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation16_64bit.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation17.phpt b/ext/standard/tests/strings/vfprintf_variation17.phpt index 871ae98d8..6c17b801f 100644 --- a/ext/standard/tests/strings/vfprintf_variation17.phpt +++ b/ext/standard/tests/strings/vfprintf_variation17.phpt @@ -34,7 +34,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation17.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation18.phpt b/ext/standard/tests/strings/vfprintf_variation18.phpt index 76168621c..5467753dc 100644 --- a/ext/standard/tests/strings/vfprintf_variation18.phpt +++ b/ext/standard/tests/strings/vfprintf_variation18.phpt @@ -57,7 +57,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation18.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation19.phpt b/ext/standard/tests/strings/vfprintf_variation19.phpt index 7ee01a97e..26c21e1e3 100644 --- a/ext/standard/tests/strings/vfprintf_variation19.phpt +++ b/ext/standard/tests/strings/vfprintf_variation19.phpt @@ -46,7 +46,7 @@ $args_array = array( /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation19.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation19_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation19_64bit.phpt index 58810a811..a56357cfd 100644 --- a/ext/standard/tests/strings/vfprintf_variation19_64bit.phpt +++ b/ext/standard/tests/strings/vfprintf_variation19_64bit.phpt @@ -46,7 +46,7 @@ $args_array = array( /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation19_64bit.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation20.phpt b/ext/standard/tests/strings/vfprintf_variation20.phpt index cd348d835..48fea341e 100644 --- a/ext/standard/tests/strings/vfprintf_variation20.phpt +++ b/ext/standard/tests/strings/vfprintf_variation20.phpt @@ -84,7 +84,7 @@ $values = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation20.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation21.phpt b/ext/standard/tests/strings/vfprintf_variation21.phpt index 4dc9ed566..09bf70395 100644 --- a/ext/standard/tests/strings/vfprintf_variation21.phpt +++ b/ext/standard/tests/strings/vfprintf_variation21.phpt @@ -81,7 +81,7 @@ $values = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation21.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation3.phpt b/ext/standard/tests/strings/vfprintf_variation3.phpt index 02535cefb..1ae945990 100644 --- a/ext/standard/tests/strings/vfprintf_variation3.phpt +++ b/ext/standard/tests/strings/vfprintf_variation3.phpt @@ -45,7 +45,7 @@ $args_array = array( // and with int values from the above $args_array array /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation3.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation4.phpt b/ext/standard/tests/strings/vfprintf_variation4.phpt index 72ca9fe3b..642f35c46 100644 --- a/ext/standard/tests/strings/vfprintf_variation4.phpt +++ b/ext/standard/tests/strings/vfprintf_variation4.phpt @@ -62,7 +62,7 @@ $args_array = array( /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation4.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation4_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation4_64bit.phpt index f7038ff76..6bf814003 100644 --- a/ext/standard/tests/strings/vfprintf_variation4_64bit.phpt +++ b/ext/standard/tests/strings/vfprintf_variation4_64bit.phpt @@ -62,7 +62,7 @@ $args_array = array( /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation4_64bit.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation5.phpt b/ext/standard/tests/strings/vfprintf_variation5.phpt index 4bac1ebe5..eb3646ca1 100644 --- a/ext/standard/tests/strings/vfprintf_variation5.phpt +++ b/ext/standard/tests/strings/vfprintf_variation5.phpt @@ -42,7 +42,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation5.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation6.phpt b/ext/standard/tests/strings/vfprintf_variation6.phpt index 6b5425d5c..b5b82bbc6 100644 --- a/ext/standard/tests/strings/vfprintf_variation6.phpt +++ b/ext/standard/tests/strings/vfprintf_variation6.phpt @@ -57,7 +57,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation6.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation7.phpt b/ext/standard/tests/strings/vfprintf_variation7.phpt Binary files differindex a206fd869..ee836edc7 100644 --- a/ext/standard/tests/strings/vfprintf_variation7.phpt +++ b/ext/standard/tests/strings/vfprintf_variation7.phpt diff --git a/ext/standard/tests/strings/vfprintf_variation8.phpt b/ext/standard/tests/strings/vfprintf_variation8.phpt index cda05c4d7..a72e260e0 100644 --- a/ext/standard/tests/strings/vfprintf_variation8.phpt +++ b/ext/standard/tests/strings/vfprintf_variation8.phpt @@ -60,7 +60,7 @@ $args_array = array( ); /* creating dumping file */ -$data_file = dirname(__FILE__) . '/dump.txt'; +$data_file = dirname(__FILE__) . '/vfprintf_variation8.txt'; if (!($fp = fopen($data_file, 'wt'))) return; diff --git a/ext/standard/tests/strings/vfprintf_variation9.phpt b/ext/standard/tests/strings/vfprintf_variation9.phpt Binary files differindex d10c8aed5..dd3093c8c 100644 --- a/ext/standard/tests/strings/vfprintf_variation9.phpt +++ b/ext/standard/tests/strings/vfprintf_variation9.phpt diff --git a/ext/standard/tests/url/parse_url_basic_001.phpt b/ext/standard/tests/url/parse_url_basic_001.phpt index 1edc32eab..4c5b0944c 100644 --- a/ext/standard/tests/url/parse_url_basic_001.phpt +++ b/ext/standard/tests/url/parse_url_basic_001.phpt @@ -743,6 +743,13 @@ echo "Done"; string(1) ":" } +--> http://::#: array(2) { + ["scheme"]=> + string(4) "http" + ["host"]=> + string(1) ":" +} + --> x://::6.5: array(3) { ["scheme"]=> string(1) "x" @@ -856,6 +863,8 @@ echo "Done"; --> http://?: bool(false) +--> http://#: bool(false) + --> http://?:: bool(false) --> http://:?: bool(false) @@ -863,4 +872,4 @@ echo "Done"; --> http://blah.com:123456: bool(false) --> http://blah.com:abcdef: bool(false) -Done
\ No newline at end of file +Done diff --git a/ext/standard/tests/url/parse_url_basic_002.phpt b/ext/standard/tests/url/parse_url_basic_002.phpt index 464e977ff..ed0f08a84 100644 --- a/ext/standard/tests/url/parse_url_basic_002.phpt +++ b/ext/standard/tests/url/parse_url_basic_002.phpt @@ -96,6 +96,7 @@ echo "Done"; --> x:/blah.com : string(1) "x" --> x://::abc/? : bool(false) --> http://::? : string(4) "http" +--> http://::# : string(4) "http" --> x://::6.5 : string(1) "x" --> http://?:/ : string(4) "http" --> http://@?:/ : string(4) "http" @@ -118,8 +119,9 @@ echo "Done"; --> http://@:/ : bool(false) --> http://:/ : bool(false) --> http://? : bool(false) +--> http://# : bool(false) --> http://?: : bool(false) --> http://:? : bool(false) --> http://blah.com:123456 : bool(false) --> http://blah.com:abcdef : bool(false) -Done
\ No newline at end of file +Done diff --git a/ext/standard/tests/url/parse_url_basic_003.phpt b/ext/standard/tests/url/parse_url_basic_003.phpt index 57f182bfa..a2bbfa648 100644 --- a/ext/standard/tests/url/parse_url_basic_003.phpt +++ b/ext/standard/tests/url/parse_url_basic_003.phpt @@ -95,6 +95,7 @@ echo "Done"; --> x:/blah.com : NULL --> x://::abc/? : bool(false) --> http://::? : string(1) ":" +--> http://::# : string(1) ":" --> x://::6.5 : string(1) ":" --> http://?:/ : string(1) "?" --> http://@?:/ : string(1) "?" @@ -117,8 +118,9 @@ echo "Done"; --> http://@:/ : bool(false) --> http://:/ : bool(false) --> http://? : bool(false) +--> http://# : bool(false) --> http://?: : bool(false) --> http://:? : bool(false) --> http://blah.com:123456 : bool(false) --> http://blah.com:abcdef : bool(false) -Done
\ No newline at end of file +Done diff --git a/ext/standard/tests/url/parse_url_basic_004.phpt b/ext/standard/tests/url/parse_url_basic_004.phpt index 6abf4ed45..839ebee55 100644 --- a/ext/standard/tests/url/parse_url_basic_004.phpt +++ b/ext/standard/tests/url/parse_url_basic_004.phpt @@ -95,6 +95,7 @@ echo "Done"; --> x:/blah.com : NULL --> x://::abc/? : bool(false) --> http://::? : NULL +--> http://::# : NULL --> x://::6.5 : int(6) --> http://?:/ : NULL --> http://@?:/ : NULL @@ -117,8 +118,9 @@ echo "Done"; --> http://@:/ : bool(false) --> http://:/ : bool(false) --> http://? : bool(false) +--> http://# : bool(false) --> http://?: : bool(false) --> http://:? : bool(false) --> http://blah.com:123456 : bool(false) --> http://blah.com:abcdef : bool(false) -Done
\ No newline at end of file +Done diff --git a/ext/standard/tests/url/parse_url_basic_005.phpt b/ext/standard/tests/url/parse_url_basic_005.phpt index 3bcc89106..c113461fe 100644 --- a/ext/standard/tests/url/parse_url_basic_005.phpt +++ b/ext/standard/tests/url/parse_url_basic_005.phpt @@ -95,6 +95,7 @@ echo "Done"; --> x:/blah.com : NULL --> x://::abc/? : bool(false) --> http://::? : NULL +--> http://::# : NULL --> x://::6.5 : NULL --> http://?:/ : NULL --> http://@?:/ : string(0) "" @@ -117,8 +118,9 @@ echo "Done"; --> http://@:/ : bool(false) --> http://:/ : bool(false) --> http://? : bool(false) +--> http://# : bool(false) --> http://?: : bool(false) --> http://:? : bool(false) --> http://blah.com:123456 : bool(false) --> http://blah.com:abcdef : bool(false) -Done
\ No newline at end of file +Done diff --git a/ext/standard/tests/url/parse_url_basic_006.phpt b/ext/standard/tests/url/parse_url_basic_006.phpt index 741a424a6..24de1cc23 100644 --- a/ext/standard/tests/url/parse_url_basic_006.phpt +++ b/ext/standard/tests/url/parse_url_basic_006.phpt @@ -95,6 +95,7 @@ echo "Done"; --> x:/blah.com : NULL --> x://::abc/? : bool(false) --> http://::? : NULL +--> http://::# : NULL --> x://::6.5 : NULL --> http://?:/ : NULL --> http://@?:/ : NULL @@ -117,8 +118,9 @@ echo "Done"; --> http://@:/ : bool(false) --> http://:/ : bool(false) --> http://? : bool(false) +--> http://# : bool(false) --> http://?: : bool(false) --> http://:? : bool(false) --> http://blah.com:123456 : bool(false) --> http://blah.com:abcdef : bool(false) -Done
\ No newline at end of file +Done diff --git a/ext/standard/tests/url/parse_url_basic_007.phpt b/ext/standard/tests/url/parse_url_basic_007.phpt index bf8f98042..d4006879f 100644 --- a/ext/standard/tests/url/parse_url_basic_007.phpt +++ b/ext/standard/tests/url/parse_url_basic_007.phpt @@ -95,6 +95,7 @@ echo "Done"; --> x:/blah.com : string(9) "/blah.com" --> x://::abc/? : bool(false) --> http://::? : NULL +--> http://::# : NULL --> x://::6.5 : NULL --> http://?:/ : string(1) "/" --> http://@?:/ : string(1) "/" @@ -117,8 +118,9 @@ echo "Done"; --> http://@:/ : bool(false) --> http://:/ : bool(false) --> http://? : bool(false) +--> http://# : bool(false) --> http://?: : bool(false) --> http://:? : bool(false) --> http://blah.com:123456 : bool(false) --> http://blah.com:abcdef : bool(false) -Done
\ No newline at end of file +Done diff --git a/ext/standard/tests/url/parse_url_basic_008.phpt b/ext/standard/tests/url/parse_url_basic_008.phpt index a61fd0694..b283829c4 100644 --- a/ext/standard/tests/url/parse_url_basic_008.phpt +++ b/ext/standard/tests/url/parse_url_basic_008.phpt @@ -95,6 +95,7 @@ echo "Done"; --> x:/blah.com : NULL --> x://::abc/? : bool(false) --> http://::? : NULL +--> http://::# : NULL --> x://::6.5 : NULL --> http://?:/ : NULL --> http://@?:/ : NULL @@ -117,8 +118,9 @@ echo "Done"; --> http://@:/ : bool(false) --> http://:/ : bool(false) --> http://? : bool(false) +--> http://# : bool(false) --> http://?: : bool(false) --> http://:? : bool(false) --> http://blah.com:123456 : bool(false) --> http://blah.com:abcdef : bool(false) -Done
\ No newline at end of file +Done diff --git a/ext/standard/tests/url/parse_url_basic_009.phpt b/ext/standard/tests/url/parse_url_basic_009.phpt index 5302388f6..a7d70f34d 100644 --- a/ext/standard/tests/url/parse_url_basic_009.phpt +++ b/ext/standard/tests/url/parse_url_basic_009.phpt @@ -95,6 +95,7 @@ echo "Done"; --> x:/blah.com : NULL --> x://::abc/? : bool(false) --> http://::? : NULL +--> http://::# : NULL --> x://::6.5 : NULL --> http://?:/ : NULL --> http://@?:/ : NULL @@ -117,8 +118,9 @@ echo "Done"; --> http://@:/ : bool(false) --> http://:/ : bool(false) --> http://? : bool(false) +--> http://# : bool(false) --> http://?: : bool(false) --> http://:? : bool(false) --> http://blah.com:123456 : bool(false) --> http://blah.com:abcdef : bool(false) -Done
\ No newline at end of file +Done diff --git a/ext/standard/tests/url/urls.inc b/ext/standard/tests/url/urls.inc index 27521c852..4192f4a86 100644 --- a/ext/standard/tests/url/urls.inc +++ b/ext/standard/tests/url/urls.inc @@ -75,6 +75,7 @@ $urls = array( 'x:/blah.com', 'x://::abc/?', 'http://::?', +'http://::#', 'x://::6.5', 'http://?:/', 'http://@?:/', @@ -99,6 +100,7 @@ $urls = array( 'http://@:/', 'http://:/', 'http://?', +'http://#', 'http://?:', 'http://:?', 'http://blah.com:123456', @@ -106,4 +108,4 @@ $urls = array( ); -?>
\ No newline at end of file +?> diff --git a/ext/standard/var.c b/ext/standard/var.c index cafb8fa34..fb2a310f4 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -436,7 +436,7 @@ PHPAPI void php_var_export_ex(zval **struc, int level, smart_str *buf TSRMLS_DC) smart_str_append_long(buf, Z_LVAL_PP(struc)); break; case IS_DOUBLE: - tmp_len = spprintf(&tmp_str, 0,"%.*H", (int) EG(precision), Z_DVAL_PP(struc)); + tmp_len = spprintf(&tmp_str, 0,"%.*H", PG(serialize_precision), Z_DVAL_PP(struc)); smart_str_appendl(buf, tmp_str, tmp_len); efree(tmp_str); break; diff --git a/ext/zip/LICENSE_libzip b/ext/zip/LICENSE_libzip new file mode 100644 index 000000000..9b2fda07b --- /dev/null +++ b/ext/zip/LICENSE_libzip @@ -0,0 +1,27 @@ +Copyright (C) 1999-2008 Dieter Baron and Thomas Klausner +The authors can be contacted at <libzip@nih.at> + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. +3. The names of the authors may not be used to endorse or promote + products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/ext/zip/lib/zip_source_error.c b/ext/zip/lib/zip_source_error.c index ffb4652d3..70ec8bc5d 100644 --- a/ext/zip/lib/zip_source_error.c +++ b/ext/zip/lib/zip_source_error.c @@ -40,7 +40,7 @@ ZIP_EXTERN(void) zip_source_error(struct zip_source *src, int *ze, int *se) { - int e[2]; + int e[2] = { 0, 0 }; if (src->src == NULL) { } diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index 7297523aa..d3ec27baf 100644 --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -102,14 +102,14 @@ static char * php_zip_make_relative_path(char *path, int path_len) /* {{{ */ char *path_begin = path; size_t i; - if (IS_SLASH(path[0])) { - return path + 1; - } - if (path_len < 1 || path == NULL) { return NULL; } + if (IS_SLASH(path[0])) { + return path + 1; + } + i = path_len; while (1) { @@ -1856,15 +1856,16 @@ static ZIPARCHIVE_METHOD(addFromString) /* TODO: fix _zip_replace */ if (cur_idx >= 0) { if (zip_delete(intern, cur_idx) == -1) { - RETURN_FALSE; + goto fail; } } - if (zip_add(intern, name, zs) == -1) { - RETURN_FALSE; - } else { + if (zip_add(intern, name, zs) != -1) { RETURN_TRUE; } +fail: + zip_source_free(zs); + RETURN_FALSE; } /* }}} */ diff --git a/ext/zlib/tests/gzeof_variation1.phpt b/ext/zlib/tests/gzeof_variation1.phpt index 6d1e0401d..77a1eccb6 100644 --- a/ext/zlib/tests/gzeof_variation1.phpt +++ b/ext/zlib/tests/gzeof_variation1.phpt @@ -9,7 +9,7 @@ if (!extension_loaded("zlib")) { --FILE-- <?php -$filename = dirname(__FILE__)."/temp.txt.gz"; +$filename = dirname(__FILE__)."/gzeof_variation1.txt.gz"; $h = gzopen($filename, 'w'); $str = "Here is the string to be written. "; $length = 10; diff --git a/ext/zlib/tests/gzfile_basic.phpt b/ext/zlib/tests/gzfile_basic.phpt index 1fceea5b9..17055646d 100644 --- a/ext/zlib/tests/gzfile_basic.phpt +++ b/ext/zlib/tests/gzfile_basic.phpt @@ -12,7 +12,7 @@ is a very common test for all languages EOT; $dirname = 'gzfile_temp'; -$filename = $dirname.'/plainfile.txt.gz'; +$filename = $dirname.'/gzfile_basic.txt.gz'; mkdir($dirname); $h = gzopen($filename, 'w'); gzwrite($h, $plaintxt); @@ -36,4 +36,4 @@ array(3) { [2]=> string(17) "for all languages" } -===DONE===
\ No newline at end of file +===DONE=== diff --git a/ext/zlib/tests/gzfile_basic2.phpt b/ext/zlib/tests/gzfile_basic2.phpt index 9f31eb0f8..2bbf315a1 100644 --- a/ext/zlib/tests/gzfile_basic2.phpt +++ b/ext/zlib/tests/gzfile_basic2.phpt @@ -12,7 +12,7 @@ is a very common test for all languages EOT; $dirname = 'gzfile_temp'; -$filename = $dirname.'/plainfile.txt'; +$filename = $dirname.'/gzfile_basic2.txt'; mkdir($dirname); $h = fopen($filename, 'w'); fwrite($h, $plaintxt); @@ -36,4 +36,4 @@ array(3) { [2]=> string(17) "for all languages" } -===DONE===
\ No newline at end of file +===DONE=== diff --git a/ext/zlib/tests/gzopen_basic2.phpt b/ext/zlib/tests/gzopen_basic2.phpt index 5cc02cd18..90766b181 100644 --- a/ext/zlib/tests/gzopen_basic2.phpt +++ b/ext/zlib/tests/gzopen_basic2.phpt @@ -18,7 +18,7 @@ echo "*** Testing gzopen() : basic functionality ***\n"; // Initialise all required variables -$filename = "temp.txt.gz"; +$filename = "gzopen_basic2.txt.gz"; $modes = array('w', 'w+'); $data = "This was the information that was written"; diff --git a/ext/zlib/tests/gzputs_basic.phpt b/ext/zlib/tests/gzputs_basic.phpt index 7566e74e7..6456e4b55 100644 --- a/ext/zlib/tests/gzputs_basic.phpt +++ b/ext/zlib/tests/gzputs_basic.phpt @@ -9,7 +9,7 @@ if (!extension_loaded("zlib")) { --FILE-- <?php -$filename = dirname(__FILE__)."/temp.txt.gz"; +$filename = dirname(__FILE__)."/gzputs_basic.txt.gz"; $h = gzopen($filename, 'w'); $str = "Here is the string to be written. "; $length = 10; diff --git a/ext/zlib/tests/gzread_variation1.phpt b/ext/zlib/tests/gzread_variation1.phpt index 1f50d7712..966351e73 100644 --- a/ext/zlib/tests/gzread_variation1.phpt +++ b/ext/zlib/tests/gzread_variation1.phpt @@ -9,7 +9,7 @@ if (!extension_loaded("zlib")) { --FILE-- <?php -$filename = "temp.txt.gz"; +$filename = "gzread_variation1.txt.gz"; $h = gzopen($filename, 'w'); $str = "Here is the string to be written. "; var_dump(gzread($h, 100)); diff --git a/ext/zlib/tests/gzwrite_basic.phpt b/ext/zlib/tests/gzwrite_basic.phpt index 0d7521625..46553eedf 100644 --- a/ext/zlib/tests/gzwrite_basic.phpt +++ b/ext/zlib/tests/gzwrite_basic.phpt @@ -9,7 +9,7 @@ if (!extension_loaded("zlib")) { --FILE-- <?php -$filename = "temp.txt.gz"; +$filename = "gzwrite_basic.txt.gz"; $h = gzopen($filename, 'w'); $str = "Here is the string to be written. "; $length = 10; diff --git a/ext/zlib/tests/gzwrite_error.phpt b/ext/zlib/tests/gzwrite_error.phpt index b84a1db0c..b4ddbb2ec 100644 --- a/ext/zlib/tests/gzwrite_error.phpt +++ b/ext/zlib/tests/gzwrite_error.phpt @@ -8,7 +8,7 @@ if (!extension_loaded("zlib")) { ?> --FILE-- <?php -$filename = "temp.txt.gz"; +$filename = "gzwrite_error.txt.gz"; $h = gzopen($filename, 'w'); $str = "Here is the string to be written. "; $length = 10; diff --git a/ext/zlib/tests/gzwrite_error2.phpt b/ext/zlib/tests/gzwrite_error2.phpt index 691275055..5f2a4197b 100644 --- a/ext/zlib/tests/gzwrite_error2.phpt +++ b/ext/zlib/tests/gzwrite_error2.phpt @@ -9,7 +9,7 @@ if (!extension_loaded("zlib")) { --FILE-- <?php -$filename = "temp.txt.gz"; +$filename = "gzwrite_error2.txt.gz"; $h = gzopen($filename, 'w'); $str = "Here is the string to be written. "; var_dump(gzwrite( $h, $str, 0 ) ); diff --git a/ext/zlib/tests/readgzfile_basic.phpt b/ext/zlib/tests/readgzfile_basic.phpt index 2d180c1a5..5fd539e21 100644 --- a/ext/zlib/tests/readgzfile_basic.phpt +++ b/ext/zlib/tests/readgzfile_basic.phpt @@ -13,7 +13,7 @@ for all languages EOT; $dirname = 'readgzfile_temp'; -$filename = $dirname.'/plainfile.txt.gz'; +$filename = $dirname.'/readgzfile_basic.txt.gz'; mkdir($dirname); $h = gzopen($filename, 'w'); gzwrite($h, $plaintxt); diff --git a/ext/zlib/tests/readgzfile_basic2.phpt b/ext/zlib/tests/readgzfile_basic2.phpt index 99d216a55..5402f960c 100644 --- a/ext/zlib/tests/readgzfile_basic2.phpt +++ b/ext/zlib/tests/readgzfile_basic2.phpt @@ -13,7 +13,7 @@ for all languages EOT; $dirname = 'readgzfile_temp'; -$filename = $dirname.'/plainfile.txt'; +$filename = $dirname.'/readgzfile_basic2.txt'; mkdir($dirname); $h = fopen($filename, 'w'); fwrite($h, $plaintxt); diff --git a/ext/zlib/tests/zlib_wrapper_fflush_basic.phpt b/ext/zlib/tests/zlib_wrapper_fflush_basic.phpt index 74ccc0dab..de1318cfe 100644 --- a/ext/zlib/tests/zlib_wrapper_fflush_basic.phpt +++ b/ext/zlib/tests/zlib_wrapper_fflush_basic.phpt @@ -9,7 +9,7 @@ if (!extension_loaded("zlib")) { --FILE-- <?php -$filename = "temp.txt.gz"; +$filename = "zlib_wrapper_fflush_basic.txt.gz"; $h = gzopen($filename, 'w'); $str = "Here is the string to be written."; $length = 10; diff --git a/ext/zlib/tests/zlib_wrapper_ftruncate_basic.phpt b/ext/zlib/tests/zlib_wrapper_ftruncate_basic.phpt index 53b140ac5..348e24505 100644 --- a/ext/zlib/tests/zlib_wrapper_ftruncate_basic.phpt +++ b/ext/zlib/tests/zlib_wrapper_ftruncate_basic.phpt @@ -9,7 +9,7 @@ if (!extension_loaded("zlib")) { --FILE-- <?php $f = dirname(__FILE__)."/004.txt.gz"; -$f2 = "temp.txt.gz"; +$f2 = "zlib_wrapper_ftruncate_basic.txt.gz"; copy($f, $f2); $h = gzopen($f2, "r"); diff --git a/main/php_version.h b/main/php_version.h index ed3f3bfd5..601e8a80b 100644 --- a/main/php_version.h +++ b/main/php_version.h @@ -2,7 +2,7 @@ /* edit configure.in to change version number */ #define PHP_MAJOR_VERSION 5 #define PHP_MINOR_VERSION 5 -#define PHP_RELEASE_VERSION 5 +#define PHP_RELEASE_VERSION 6 #define PHP_EXTRA_VERSION "" -#define PHP_VERSION "5.5.5" -#define PHP_VERSION_ID 50505 +#define PHP_VERSION "5.5.6" +#define PHP_VERSION_ID 50506 diff --git a/php.ini-development b/php.ini-development index 630f9e94e..2ef47a40a 100644 --- a/php.ini-development +++ b/php.ini-development @@ -1907,7 +1907,7 @@ ldap.max_links = -1 ;opcache.revalidate_path=0 ; If disabled, all PHPDoc comments are dropped from the code to reduce the - ;size of the optimized code. +; size of the optimized code. ;opcache.save_comments=1 ; If disabled, PHPDoc comments are not loaded from SHM, so "Doc Comments" diff --git a/php.ini-production b/php.ini-production index ba30f9088..c39de742d 100644 --- a/php.ini-production +++ b/php.ini-production @@ -1907,7 +1907,7 @@ ldap.max_links = -1 ;opcache.revalidate_path=0 ; If disabled, all PHPDoc comments are dropped from the code to reduce the - ;size of the optimized code. +; size of the optimized code. ;opcache.save_comments=1 ; If disabled, PHPDoc comments are not loaded from SHM, so "Doc Comments" diff --git a/sapi/fpm/fpm/fastcgi.c b/sapi/fpm/fpm/fastcgi.c index 99905c8b6..ec579eadf 100644 --- a/sapi/fpm/fpm/fastcgi.c +++ b/sapi/fpm/fpm/fastcgi.c @@ -426,8 +426,9 @@ static int fcgi_get_params(fcgi_request *req, unsigned char *p, unsigned char *e char buf[128]; char *tmp = buf; size_t buf_size = sizeof(buf); - int name_len, val_len; - uint eff_name_len; + int name_len = 0; + int val_len = 0; + uint eff_name_len = 0; char *s; int ret = 1; size_t bytes_consumed; diff --git a/sapi/fpm/fpm/fpm_children.c b/sapi/fpm/fpm/fpm_children.c index 84a947433..45cc075b4 100644 --- a/sapi/fpm/fpm/fpm_children.c +++ b/sapi/fpm/fpm/fpm_children.c @@ -251,7 +251,7 @@ void fpm_children_bury() /* {{{ */ } zlog(severity, "[pool %s] child %d exited %s after %ld.%06d seconds from start", child->wp->config->name, (int) pid, buf, tv2.tv_sec, (int) tv2.tv_usec); } else { - zlog(ZLOG_DEBUG, "[pool %s] child %d has been killed by the process managment after %ld.%06d seconds from start", child->wp->config->name, (int) pid, tv2.tv_sec, (int) tv2.tv_usec); + zlog(ZLOG_DEBUG, "[pool %s] child %d has been killed by the process management after %ld.%06d seconds from start", child->wp->config->name, (int) pid, tv2.tv_sec, (int) tv2.tv_usec); } fpm_child_close(child, 1 /* in event_loop */); diff --git a/sapi/fpm/fpm/fpm_sockets.c b/sapi/fpm/fpm/fpm_sockets.c index 145b2550c..e056565ea 100644 --- a/sapi/fpm/fpm/fpm_sockets.c +++ b/sapi/fpm/fpm/fpm_sockets.c @@ -487,6 +487,7 @@ int fpm_socket_unix_test_connect(struct sockaddr_un *sock, size_t socklen) /* {{ } if (connect(fd, (struct sockaddr *)sock, socklen) == -1) { + close(fd); return -1; } diff --git a/sapi/fpm/fpm/fpm_sockets.h b/sapi/fpm/fpm/fpm_sockets.h index cce5712b8..121c016a7 100644 --- a/sapi/fpm/fpm/fpm_sockets.h +++ b/sapi/fpm/fpm/fpm_sockets.h @@ -19,7 +19,7 @@ #if (__FreeBSD__) || (__OpenBSD__) #define FPM_BACKLOG_DEFAULT -1 #else -#define FPM_BACKLOG_DEFAULT 128 +#define FPM_BACKLOG_DEFAULT 65535 #endif enum fpm_address_domain fpm_sockets_domain_from_address(char *addr); diff --git a/sapi/fpm/php-fpm.8.in b/sapi/fpm/php-fpm.8.in index a4e7e74e2..b02aa25ba 100644 --- a/sapi/fpm/php-fpm.8.in +++ b/sapi/fpm/php-fpm.8.in @@ -96,7 +96,7 @@ Specify alternative path to FastCGI process manager configuration file (the defa .PD 1 .B \-t Test FPM configuration file and exit -If called twice (-tt), the configuration is dumped before exiting. +If called twice (\-tt), the configuration is dumped before exiting. .TP .PD 0 .B \-\-daemonize diff --git a/sapi/fpm/php-fpm.conf.in b/sapi/fpm/php-fpm.conf.in index af4f2fa32..9002a2933 100644 --- a/sapi/fpm/php-fpm.conf.in +++ b/sapi/fpm/php-fpm.conf.in @@ -159,8 +159,8 @@ group = @php_fpm_group@ listen = 127.0.0.1:9000 ; Set listen(2) backlog. -; Default Value: 128 (-1 on FreeBSD and OpenBSD) -;listen.backlog = 128 +; Default Value: 65535 (-1 on FreeBSD and OpenBSD) +;listen.backlog = 65535 ; Set permissions for unix socket, if one is used. In Linux, read/write ; permissions must be set in order to allow connections from a web server. Many diff --git a/tests/lang/bug24640.phpt b/tests/lang/bug24640.phpt index 919b38e29..e41d0201b 100644 --- a/tests/lang/bug24640.phpt +++ b/tests/lang/bug24640.phpt @@ -36,22 +36,22 @@ test(1.7e-1000); ===DONE=== <?php exit(0); ?> --EXPECTF-- -1.7E+300 +1.7000000000000001E+300 float(1.7E+300) 1.7E+300 1.7E+300 ------ -1.7E-300 +1.7000000000000001E-300 float(1.7E-300) 1.7E-300 1.7E-300 ------ -1.7E+79 +1.7000000000000002E+79 float(1.7E+79) 1.7E+79 1.7E+79 ------ -1.7E-79 +1.6999999999999999E-79 float(1.7E-79) 1.7E-79 1.7E-79 @@ -71,7 +71,7 @@ float(1.7E+81) 1.7E+81 1.7E+81 ------ -1.7E-81 +1.6999999999999999E-81 float(1.7E-81) 1.7E-81 1.7E-81 @@ -81,7 +81,7 @@ float(I%s) I%s I%s ------ -1.69998107421E-319 +1.6999810742105611E-319 float(1.69998107421E-319) 1.69998107421E-319 1.69998107421E-319 @@ -91,7 +91,7 @@ float(I%s) I%s I%s ------ -1.70007988734E-320 +1.7000798873397294E-320 float(1.70007988734E-320) 1.70007988734E-320 1.70007988734E-320 @@ -101,7 +101,7 @@ float(I%s) I%s I%s ------ -1.69958582169E-321 +1.6995858216938881E-321 float(1.69958582169E-321) 1.69958582169E-321 1.69958582169E-321 diff --git a/win32/build/libs_version.txt b/win32/build/libs_version.txt index 123a75d78..44420ddec 100644 --- a/win32/build/libs_version.txt +++ b/win32/build/libs_version.txt @@ -1,12 +1,11 @@ bz2-1.0.6 cclient-2007f freetype-2.4.10 -icu-50.1.2 +icu-51.2 jpeglib-9 libcurl-7.30.0 libiconv-1.14 libmcrypt-2.5.8 -libmpir-2.5.1 libmpir-2.6.0 libpng-1.5.14 libpq-9.2.2 |