summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2014-12-13 19:43:45 +0100
committerAnatol Belski <ab@php.net>2014-12-13 19:43:45 +0100
commitbb66f385d09e7e55390e9f57fcbca08f6b43ff91 (patch)
tree54defb44e55c1ebc0afa15aa60758d87a4b9ce3b
parentdfb18b1188492efa48ade07029172c5535f65f93 (diff)
parent0ea0b591d79ae0ee18d33533a5c701330836ff6b (diff)
downloadphp-git-bb66f385d09e7e55390e9f57fcbca08f6b43ff91.tar.gz
Merge remote-tracking branch 'origin/master' into native-tls
* origin/master: (37 commits) NEWS NEWS Fix bug #68601 buffer read overflow in gd_gif_in.c Fixed compilation warnings Removed unnecessary checks pcntl_signal_dispatch: Speed up by preventing system calls when unnecessary Merged PR #911. Removed ZEND_ACC_FINAL_CLASS which is unnecessary. This also fixed some currently defined classes as final which were just not being considered as such before. Updated NEWS Updated NEWS Updated NEWS Fix bug #68532: convert.base64-encode omits padding bytes Updated NEWS Updated NEWS Updated NEWS Fixed Bug #65576 (Constructor from trait conflicts with inherited constructor) Updated NEWS Updated NEWS Fix MySQLi tests Fixed gd test ...
-rw-r--r--NEWS8
-rw-r--r--UPGRADING.INTERNALS4
-rw-r--r--Zend/tests/traits/bug65576a.phpt31
-rw-r--r--Zend/tests/traits/bug65576b.phpt33
-rw-r--r--Zend/zend_API.c36
-rw-r--r--Zend/zend_API.h29
-rw-r--r--Zend/zend_closures.c4
-rw-r--r--Zend/zend_compile.c8
-rw-r--r--Zend/zend_compile.h1
-rw-r--r--Zend/zend_exceptions.c6
-rw-r--r--Zend/zend_execute.c18
-rw-r--r--Zend/zend_execute_API.c4
-rw-r--r--Zend/zend_generators.c2
-rw-r--r--Zend/zend_indent.c2
-rw-r--r--Zend/zend_inheritance.c10
-rw-r--r--Zend/zend_interfaces.c8
-rw-r--r--Zend/zend_iterators.c7
-rw-r--r--Zend/zend_language_parser.y2
-rw-r--r--Zend/zend_operators.h12
-rw-r--r--Zend/zend_virtual_cwd.c2
-rw-r--r--Zend/zend_vm_def.h4
-rw-r--r--Zend/zend_vm_execute.h4
-rw-r--r--ext/date/tests/bug36988.phpt7
-rw-r--r--ext/date/tests/bug52062.phpt12
-rw-r--r--ext/date/tests/date_sunrise_variation2.phpt6
-rw-r--r--ext/date/tests/date_sunrise_variation9.phpt40
-rw-r--r--ext/date/tests/date_sunset_variation2.phpt8
-rw-r--r--ext/date/tests/date_sunset_variation9.phpt38
-rw-r--r--ext/date/tests/getdate_variation7.phpt65
-rw-r--r--ext/date/tests/gmdate_variation14.phpt18
-rw-r--r--ext/date/tests/gmstrftime_variation2.phpt8
-rw-r--r--ext/date/tests/idate_variation3.phpt20
-rw-r--r--ext/date/tests/localtime_variation3.phpt102
-rw-r--r--ext/date/tests/strftime_variation23.phpt20
-rw-r--r--ext/gd/libgd/gd_gif_in.c11
-rw-r--r--ext/gd/tests/imagecreatetruecolor_error2.phpt4
-rw-r--r--ext/iconv/tests/iconv_mime_decode_headers_variation2.phpt23
-rw-r--r--ext/iconv/tests/iconv_mime_decode_headers_variation3.phpt23
-rw-r--r--ext/iconv/tests/iconv_mime_decode_variation2.phpt5
-rw-r--r--ext/iconv/tests/iconv_strpos_variation3.phpt2
-rw-r--r--ext/mysqli/mysqli.c4
-rw-r--r--ext/mysqli/tests/mysqli_field_seek.phpt4
-rw-r--r--ext/mysqli/tests/mysqli_stmt_get_result_seek.phpt7
-rw-r--r--ext/mysqli/tests/mysqli_stmt_send_long_data.phpt6
-rw-r--r--ext/pcntl/pcntl.c7
-rw-r--r--ext/pcntl/php_pcntl.h1
-rw-r--r--ext/pdo/pdo_stmt.c2
-rwxr-xr-xext/phar/phar_object.c4
-rw-r--r--ext/posix/tests/posix_getgrgid_variation.phpt5
-rw-r--r--ext/posix/tests/posix_getpgid_variation.phpt3
-rw-r--r--ext/posix/tests/posix_getpwuid_variation.phpt5
-rw-r--r--ext/posix/tests/posix_kill_variation1.phpt5
-rw-r--r--ext/posix/tests/posix_kill_variation2.phpt3
-rw-r--r--ext/posix/tests/posix_seteuid_variation4.phpt5
-rw-r--r--ext/posix/tests/posix_setgid_variation4.phpt5
-rw-r--r--ext/posix/tests/posix_setuid_variation4.phpt5
-rw-r--r--ext/posix/tests/posix_strerror_variation1.phpt7
-rw-r--r--ext/reflection/php_reflection.c10
-rw-r--r--ext/reflection/tests/ReflectionClass_getModifiers_basic.phpt2
-rw-r--r--ext/reflection/tests/ReflectionClass_modifiers_001.phpt2
-rw-r--r--ext/reflection/tests/ReflectionClass_toString_001.phpt2
-rw-r--r--ext/simplexml/tests/SimpleXMLElement_xpath.phpt12
-rw-r--r--ext/standard/tests/array/array_change_key_case_variation2.phpt4
-rw-r--r--ext/standard/tests/array/array_chunk_variation2.phpt2
-rw-r--r--ext/standard/tests/array/array_fill_variation1.phpt9
-rw-r--r--ext/standard/tests/array/array_pad_variation2.phpt2
-rw-r--r--ext/standard/tests/array/array_rand_variation2.phpt2
-rw-r--r--ext/standard/tests/array/array_slice_variation2.phpt13
-rw-r--r--ext/standard/tests/array/count_variation2.phpt4
-rw-r--r--ext/standard/tests/array/rsort_variation2.phpt4
-rw-r--r--ext/standard/tests/dir/scandir_variation2.phpt2
-rw-r--r--ext/standard/tests/file/bug68532.phpt25
-rw-r--r--ext/standard/tests/file/chmod_variation4.phpt2
-rw-r--r--ext/standard/tests/file/file_get_contents_variation5.phpt2
-rw-r--r--ext/standard/tests/file/file_variation3.phpt2
-rw-r--r--ext/standard/tests/file/fseek_variation2.phpt2
-rw-r--r--ext/standard/tests/file/mkdir_variation2.phpt2
-rw-r--r--ext/standard/tests/file/pathinfo_variation2.phpt2
-rw-r--r--ext/standard/tests/file/stream_rfc2397_007.phpt2
-rw-r--r--ext/standard/tests/file/touch_variation3.phpt1
-rw-r--r--ext/standard/tests/file/touch_variation4.phpt1
-rw-r--r--ext/standard/tests/file/umask_variation3.phpt1
-rw-r--r--ext/standard/tests/general_functions/getrusage_variation1.phpt1
-rw-r--r--ext/standard/tests/general_functions/intval_variation2.phpt10
-rw-r--r--ext/standard/tests/image/image_type_to_mime_type_variation1.phpt4
-rw-r--r--ext/standard/tests/math/mt_rand_variation2.phpt6
-rw-r--r--ext/standard/tests/math/mt_srand_variation1.phpt4
-rw-r--r--ext/standard/tests/math/rand_variation1.phpt6
-rw-r--r--ext/standard/tests/math/rand_variation2.phpt6
-rw-r--r--ext/standard/tests/math/srand_variation1.phpt4
-rw-r--r--ext/standard/tests/strings/bug54322.phpt5
-rw-r--r--ext/standard/tests/strings/chunk_split_variation2.phpt6
-rw-r--r--ext/standard/tests/strings/chunk_split_variation5.phptbin2289 -> 2285 bytes
-rw-r--r--ext/standard/tests/strings/chunk_split_variation8.phpt4
-rw-r--r--ext/standard/tests/strings/count_chars_variation2.phpt2
-rw-r--r--ext/standard/tests/strings/explode.phpt2
-rw-r--r--ext/standard/tests/strings/htmlspecialchars_decode_variation2.phpt4
-rw-r--r--ext/standard/tests/strings/str_pad_variation4.phpt2
-rw-r--r--ext/standard/tests/strings/str_split_variation2.phpt4
-rw-r--r--ext/standard/tests/strings/str_split_variation6.phpt4
-rw-r--r--ext/standard/tests/strings/str_split_variation7.phpt4
-rw-r--r--ext/standard/tests/strings/strcspn_variation4.phpt4
-rw-r--r--ext/standard/tests/strings/stripos_variation14.phpt2
-rw-r--r--ext/standard/tests/strings/stripos_variation15.phpt2
-rw-r--r--ext/standard/tests/strings/strncasecmp_variation5.phpt2
-rw-r--r--ext/standard/tests/strings/strncmp_variation5.phpt2
-rw-r--r--ext/standard/tests/strings/strripos_offset.phpt10
-rw-r--r--ext/standard/tests/strings/strrpos_offset.phpt10
-rw-r--r--ext/standard/tests/strings/strrpos_variation14.phpt4
-rw-r--r--ext/standard/tests/strings/strrpos_variation15.phpt4
-rw-r--r--ext/standard/tests/url/parse_url_variation_002_32bit.phpt62
-rw-r--r--ext/tidy/tidy.c2
-rw-r--r--ext/tokenizer/tests/001.phpt3
-rw-r--r--ext/xml/tests/xml_error_string_variation1.phpt2
-rw-r--r--ext/xml/tests/xml_parser_get_option_variation2.phpt2
-rw-r--r--ext/xml/tests/xml_parser_set_option_variation2.phpt1
-rw-r--r--main/streams/memory.c20
-rw-r--r--tests/output/ob_implicit_flush_variation_001.phpt4
118 files changed, 614 insertions, 437 deletions
diff --git a/NEWS b/NEWS
index 07bbd045fd..44c247624e 100644
--- a/NEWS
+++ b/NEWS
@@ -22,6 +22,10 @@ PHP NEWS
classes (https://wiki.php.net/rfc/secure_unserialize). (Stas)
. Fixed bug #68185 ("Inconsistent insteadof definition."- incorrectly triggered). (Julien)
. Fixed bug #65419 (Inside trait, self::class != __CLASS__). (Julien)
+ . Fixed bug #65576 (Constructor from trait conflicts with inherited
+ constructor). (dunglas at gmail dot com)
+ . Removed ZEND_ACC_FINAL_CLASS, promoting ZEND_ACC_FINAL as final class
+ modifier. (Guilherme Blanco)
- Date:
. Fixed day_of_week function as it could sometimes return negative values
@@ -82,6 +86,10 @@ PHP NEWS
. Added intdiv() function. (Andrea)
. Improved precision of log() function for base 2 and 10. (Marc Bennewitz)
+- Streams:
+ . Fixed bug #68532 (convert.base64-encode omits padding bytes).
+ (blaesius at krumedia dot de)
+
- XSL:
. Fixed bug #64776 (The XSLT extension is not thread safe). (Mike)
diff --git a/UPGRADING.INTERNALS b/UPGRADING.INTERNALS
index 0c4dc8a342..3b80f295e2 100644
--- a/UPGRADING.INTERNALS
+++ b/UPGRADING.INTERNALS
@@ -13,6 +13,7 @@ PHP 7.0 INTERNALS UPGRADE NOTES
l. get_class_name object handler info
m. Other portable macros info
n. ZEND_ENGINE_2 removal
+ o. Updated final class modifier
2. Build system changes
a. Unix build system changes
@@ -123,6 +124,9 @@ PHP 7.0 INTERNALS UPGRADE NOTES
ZEND_NORETURN is defined as __declspec(noreturn) on VS
n. The ZEND_ENGINE_2 macro has been removed. A ZEND_ENGINE_3 macro has been added.
+
+ o. Removed ZEND_ACC_FINAL_CLASS in favour of ZEND_ACC_FINAL, turning final class
+ modifier now a different class entry flag. Update your extensions.
========================
2. Build system changes
diff --git a/Zend/tests/traits/bug65576a.phpt b/Zend/tests/traits/bug65576a.phpt
new file mode 100644
index 0000000000..49b2ba0c96
--- /dev/null
+++ b/Zend/tests/traits/bug65576a.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Bug #65576 (Constructor from trait conflicts with inherited constructor)
+--FILE--
+<?php
+
+trait T
+{
+ public function __construct()
+ {
+ echo "Trait contructor\n";
+ }
+}
+
+class A
+{
+ public function __construct()
+ {
+ echo "Parent constructor\n";
+ }
+}
+
+class B extends A
+{
+ use T;
+}
+
+new B();
+
+--EXPECT--
+Trait contructor
+
diff --git a/Zend/tests/traits/bug65576b.phpt b/Zend/tests/traits/bug65576b.phpt
new file mode 100644
index 0000000000..3be52ba7c9
--- /dev/null
+++ b/Zend/tests/traits/bug65576b.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Bug #65576 (Constructor from trait conflicts with inherited constructor)
+--FILE--
+<?php
+
+trait T
+{
+ public function __construct()
+ {
+ parent::__construct();
+ echo "Trait contructor\n";
+ }
+}
+
+class A
+{
+ public function __construct()
+ {
+ echo "Parent constructor\n";
+ }
+}
+
+class B extends A
+{
+ use T;
+}
+
+new B();
+
+--EXPECT--
+Parent constructor
+Trait contructor
+
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 369852ffbe..788da61474 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -404,14 +404,16 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons
if ((type = is_numeric_string(Z_STRVAL_P(arg), Z_STRLEN_P(arg), p, &d, -1)) == 0) {
return "long";
} else if (type == IS_DOUBLE) {
- if (c == 'L') {
- if (d > ZEND_LONG_MAX) {
- *p = ZEND_LONG_MAX;
- break;
- } else if (d < ZEND_LONG_MIN) {
- *p = ZEND_LONG_MIN;
- break;
+ if (zend_isnan(d)) {
+ return "long";
+ }
+ if (!ZEND_DOUBLE_FITS_LONG(d)) {
+ if (c == 'L') {
+ *p = (d > 0) ? ZEND_LONG_MAX : ZEND_LONG_MIN;
+ } else {
+ return "long";
}
+ break;
}
*p = zend_dval_to_lval(d);
@@ -420,14 +422,16 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons
break;
case IS_DOUBLE:
- if (c == 'L') {
- if (Z_DVAL_P(arg) > ZEND_LONG_MAX) {
- *p = ZEND_LONG_MAX;
- break;
- } else if (Z_DVAL_P(arg) < ZEND_LONG_MIN) {
- *p = ZEND_LONG_MIN;
- break;
+ if (zend_isnan(Z_DVAL_P(arg))) {
+ return "long";
+ }
+ if (!ZEND_DOUBLE_FITS_LONG(Z_DVAL_P(arg))) {
+ if (c == 'L') {
+ *p = (Z_DVAL_P(arg) > 0) ? ZEND_LONG_MAX : ZEND_LONG_MIN;
+ } else {
+ return "long";
}
+ break;
}
case IS_NULL:
case IS_FALSE:
@@ -1127,7 +1131,7 @@ ZEND_API void zend_merge_properties(zval *obj, HashTable *properties TSRMLS_DC)
}
/* }}} */
-static int zval_update_class_constant(zval *pp, int is_static, int offset TSRMLS_DC) /* {{{ */
+static int zval_update_class_constant(zval *pp, int is_static, uint32_t offset TSRMLS_DC) /* {{{ */
{
ZVAL_DEREF(pp);
if (Z_CONSTANT_P(pp)) {
@@ -2195,7 +2199,7 @@ ZEND_API int zend_register_functions(zend_class_entry *scope, const zend_functio
internal_function->arg_info = (zend_internal_arg_info*)ptr->arg_info+1;
internal_function->num_args = ptr->num_args;
/* Currently you cannot denote that the function can accept less arguments than num_args */
- if (info->required_num_args == -1) {
+ if (info->required_num_args == (zend_uintptr_t)-1) {
internal_function->required_num_args = ptr->num_args;
} else {
internal_function->required_num_args = info->required_num_args;
diff --git a/Zend/zend_API.h b/Zend/zend_API.h
index bee797b7da..1e031ca844 100644
--- a/Zend/zend_API.h
+++ b/Zend/zend_API.h
@@ -525,7 +525,7 @@ ZEND_API zend_array *zend_rebuild_symbol_table(TSRMLS_D);
ZEND_API void zend_attach_symbol_table(zend_execute_data *execute_data);
ZEND_API void zend_detach_symbol_table(zend_execute_data *execute_data);
ZEND_API int zend_set_local_var(zend_string *name, zval *value, int force TSRMLS_DC);
-ZEND_API int zend_set_local_var_str(const char *name, int len, zval *value, int force TSRMLS_DC);
+ZEND_API int zend_set_local_var_str(const char *name, size_t len, zval *value, int force TSRMLS_DC);
ZEND_API zend_string *zend_find_alias_name(zend_class_entry *ce, zend_string *name);
ZEND_API zend_string *zend_resolve_method_name(zend_class_entry *ce, zend_function *f);
@@ -1064,10 +1064,16 @@ static zend_always_inline int _z_param_long(zval *arg, zend_long *dest, zend_boo
if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
*dest = Z_LVAL_P(arg);
} else if (EXPECTED(Z_TYPE_P(arg) == IS_DOUBLE)) {
- if (strict && UNEXPECTED(Z_DVAL_P(arg) > ZEND_LONG_MAX)) {
- *dest = ZEND_LONG_MAX;
- } else if (strict && UNEXPECTED(Z_DVAL_P(arg) < ZEND_LONG_MIN)) {
- *dest = ZEND_LONG_MIN;
+ if (UNEXPECTED(zend_isnan(Z_DVAL_P(arg)))) {
+ return 0;
+ }
+ if (UNEXPECTED(!ZEND_DOUBLE_FITS_LONG(Z_DVAL_P(arg)))) {
+ /* Ironically, the strict parameter makes zpp *non*-strict here */
+ if (strict) {
+ *dest = (Z_DVAL_P(arg) > 0) ? ZEND_LONG_MAX : ZEND_LONG_MIN;
+ } else {
+ return 0;
+ }
} else {
*dest = zend_dval_to_lval(Z_DVAL_P(arg));
}
@@ -1077,10 +1083,15 @@ static zend_always_inline int _z_param_long(zval *arg, zend_long *dest, zend_boo
if (UNEXPECTED((type = is_numeric_str_function(Z_STR_P(arg), dest, &d)) != IS_LONG)) {
if (EXPECTED(type != 0)) {
- if (strict && UNEXPECTED(d > ZEND_LONG_MAX)) {
- *dest = ZEND_LONG_MAX;
- } else if (strict && UNEXPECTED(d < ZEND_LONG_MIN)) {
- *dest = ZEND_LONG_MIN;
+ if (UNEXPECTED(zend_isnan(d))) {
+ return 0;
+ }
+ if (UNEXPECTED(!ZEND_DOUBLE_FITS_LONG(d))) {
+ if (strict) {
+ *dest = (d > 0) ? ZEND_LONG_MAX : ZEND_LONG_MIN;
+ } else {
+ return 0;
+ }
} else {
*dest = zend_dval_to_lval(d);
}
diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c
index bf0ba0ace4..94ee585ddc 100644
--- a/Zend/zend_closures.c
+++ b/Zend/zend_closures.c
@@ -436,7 +436,7 @@ static const zend_function_entry closure_functions[] = {
ZEND_ME(Closure, bind, arginfo_closure_bind, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
ZEND_MALIAS(Closure, bindTo, bind, arginfo_closure_bindto, ZEND_ACC_PUBLIC)
ZEND_ME(Closure, call, arginfo_closure_call, ZEND_ACC_PUBLIC)
- {NULL, NULL, NULL}
+ ZEND_FE_END
};
void zend_register_closure_ce(TSRMLS_D) /* {{{ */
@@ -445,7 +445,7 @@ void zend_register_closure_ce(TSRMLS_D) /* {{{ */
INIT_CLASS_ENTRY(ce, "Closure", closure_functions);
zend_ce_closure = zend_register_internal_class(&ce TSRMLS_CC);
- zend_ce_closure->ce_flags |= ZEND_ACC_FINAL_CLASS;
+ zend_ce_closure->ce_flags |= ZEND_ACC_FINAL;
zend_ce_closure->create_object = zend_closure_new;
zend_ce_closure->serialize = zend_class_serialize_deny;
zend_ce_closure->unserialize = zend_class_unserialize_deny;
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 97c10f4ca8..9c5ca95b8d 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -1033,7 +1033,7 @@ void zend_do_early_binding(TSRMLS_D) /* {{{ */
if (CG(compiler_options) & ZEND_COMPILE_DELAYED_BINDING) {
uint32_t *opline_num = &CG(active_op_array)->early_binding;
- while (*opline_num != -1) {
+ while (*opline_num != (uint32_t)-1) {
opline_num = &CG(active_op_array)->opcodes[*opline_num].result.opline_num;
}
*opline_num = opline - CG(active_op_array)->opcodes;
@@ -1074,13 +1074,13 @@ void zend_do_early_binding(TSRMLS_D) /* {{{ */
ZEND_API void zend_do_delayed_early_binding(const zend_op_array *op_array TSRMLS_DC) /* {{{ */
{
- if (op_array->early_binding != -1) {
+ if (op_array->early_binding != (uint32_t)-1) {
zend_bool orig_in_compilation = CG(in_compilation);
uint32_t opline_num = op_array->early_binding;
zend_class_entry *ce;
CG(in_compilation) = 1;
- while (opline_num != -1) {
+ while (opline_num != (uint32_t)-1) {
if ((ce = zend_lookup_class(Z_STR_P(RT_CONSTANT(op_array, op_array->opcodes[opline_num-1].op2)) TSRMLS_CC)) != NULL) {
do_bind_inherited_class(op_array, &op_array->opcodes[opline_num], EG(class_table), ce, 0 TSRMLS_CC);
}
@@ -1973,7 +1973,7 @@ static zend_op *zend_compile_simple_var_no_cv(znode *result, zend_ast *ast, uint
/* there is a chance someone is accessing $this */
if (ast->kind != ZEND_AST_ZVAL
- && CG(active_op_array)->scope && CG(active_op_array)->this_var == -1
+ && CG(active_op_array)->scope && CG(active_op_array)->this_var == (uint32_t)-1
) {
zend_string *key = zend_string_init("this", sizeof("this") - 1, 0);
CG(active_op_array)->this_var = lookup_cv(CG(active_op_array), key TSRMLS_CC);
diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h
index c44b37b995..3b1e046cc0 100644
--- a/Zend/zend_compile.h
+++ b/Zend/zend_compile.h
@@ -182,7 +182,6 @@ typedef struct _zend_try_catch_element {
/* ZEND_ACC_EXPLICIT_ABSTRACT_CLASS denotes that a class was explicitly defined as abstract by using the keyword. */
#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS 0x10
#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS 0x20
-#define ZEND_ACC_FINAL_CLASS 0x40
#define ZEND_ACC_INTERFACE 0x80
#define ZEND_ACC_TRAIT 0x120
diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c
index 4159a46d3c..0d5fc53da8 100644
--- a/Zend/zend_exceptions.c
+++ b/Zend/zend_exceptions.c
@@ -664,7 +664,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_exception___construct, 0, 0, 0)
ZEND_ARG_INFO(0, previous)
ZEND_END_ARG_INFO()
-const static zend_function_entry default_exception_functions[] = {
+static const zend_function_entry default_exception_functions[] = {
ZEND_ME(exception, __clone, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_FINAL)
ZEND_ME(exception, __construct, arginfo_exception___construct, ZEND_ACC_PUBLIC)
ZEND_ME(exception, getMessage, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
@@ -675,7 +675,7 @@ const static zend_function_entry default_exception_functions[] = {
ZEND_ME(exception, getPrevious, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
ZEND_ME(exception, getTraceAsString, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
ZEND_ME(exception, __toString, NULL, 0)
- {NULL, NULL, NULL}
+ ZEND_FE_END
};
ZEND_BEGIN_ARG_INFO_EX(arginfo_error_exception___construct, 0, 0, 0)
@@ -690,7 +690,7 @@ ZEND_END_ARG_INFO()
static const zend_function_entry error_exception_functions[] = {
ZEND_ME(error_exception, __construct, arginfo_error_exception___construct, ZEND_ACC_PUBLIC)
ZEND_ME(error_exception, getSeverity, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
- {NULL, NULL, NULL}
+ ZEND_FE_END
};
/* }}} */
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index aff92a3952..0a156f84a4 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -1168,7 +1168,7 @@ str_index:
return retval;
}
-static zend_never_inline zend_long zend_check_string_offset(zval *container, zval *dim, int type TSRMLS_DC)
+static zend_never_inline zend_long zend_check_string_offset(zval *dim, int type TSRMLS_DC)
{
zend_long offset;
@@ -1211,7 +1211,7 @@ try_again:
static zend_always_inline zend_long zend_fetch_string_offset(zval *container, zval *dim, int type TSRMLS_DC)
{
- zend_long offset = zend_check_string_offset(container, dim, type TSRMLS_CC);
+ zend_long offset = zend_check_string_offset(dim, type TSRMLS_CC);
if (Z_REFCOUNTED_P(container)) {
if (Z_REFCOUNT_P(container) > 1) {
@@ -1250,7 +1250,7 @@ convert_to_array:
goto fetch_from_array;
}
- zend_check_string_offset(container, dim, type TSRMLS_CC);
+ zend_check_string_offset(dim, type TSRMLS_CC);
ZVAL_INDIRECT(result, NULL); /* wrong string offset */
} else if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
@@ -1666,12 +1666,12 @@ static zend_always_inline void i_init_func_execute_data(zend_execute_data *execu
} while (var != end);
}
- if (op_array->this_var != -1 && Z_OBJ(EX(This))) {
+ if (op_array->this_var != (uint32_t)-1 && EXPECTED(Z_OBJ(EX(This)))) {
ZVAL_OBJ(EX_VAR(op_array->this_var), Z_OBJ(EX(This)));
GC_REFCOUNT(Z_OBJ(EX(This)))++;
}
- if (!op_array->run_time_cache && op_array->last_cache_slot) {
+ if (UNEXPECTED(!op_array->run_time_cache)) {
op_array->run_time_cache = zend_arena_calloc(&CG(arena), op_array->last_cache_slot, sizeof(void*));
}
EX_LOAD_RUN_TIME_CACHE(op_array);
@@ -1691,12 +1691,12 @@ static zend_always_inline void i_init_code_execute_data(zend_execute_data *execu
zend_attach_symbol_table(execute_data);
- if (op_array->this_var != -1 && Z_OBJ(EX(This))) {
+ if (op_array->this_var != (uint32_t)-1 && EXPECTED(Z_OBJ(EX(This)))) {
ZVAL_OBJ(EX_VAR(op_array->this_var), Z_OBJ(EX(This)));
GC_REFCOUNT(Z_OBJ(EX(This)))++;
}
- if (!op_array->run_time_cache && op_array->last_cache_slot) {
+ if (!op_array->run_time_cache) {
op_array->run_time_cache = ecalloc(op_array->last_cache_slot, sizeof(void*));
}
EX_LOAD_RUN_TIME_CACHE(op_array);
@@ -1762,12 +1762,12 @@ static zend_always_inline void i_init_execute_data(zend_execute_data *execute_da
}
}
- if (op_array->this_var != -1 && Z_OBJ(EX(This))) {
+ if (op_array->this_var != (uint32_t)-1 && EXPECTED(Z_OBJ(EX(This)))) {
ZVAL_OBJ(EX_VAR(op_array->this_var), Z_OBJ(EX(This)));
GC_REFCOUNT(Z_OBJ(EX(This)))++;
}
- if (!op_array->run_time_cache && op_array->last_cache_slot) {
+ if (!op_array->run_time_cache) {
if (op_array->function_name) {
op_array->run_time_cache = zend_arena_calloc(&CG(arena), op_array->last_cache_slot, sizeof(void*));
} else {
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index 760747affa..480206bfb5 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -218,7 +218,7 @@ void shutdown_destructors(TSRMLS_D) /* {{{ */
EG(symbol_table).ht.pDestructor = zend_unclean_zval_ptr_dtor;
}
zend_try {
- int symbols;
+ uint32_t symbols;
do {
symbols = zend_hash_num_elements(&EG(symbol_table).ht);
zend_hash_reverse_apply(&EG(symbol_table).ht, (apply_func_t) zval_call_destructor TSRMLS_CC);
@@ -1542,7 +1542,7 @@ ZEND_API int zend_set_local_var(zend_string *name, zval *value, int force TSRMLS
}
/* }}} */
-ZEND_API int zend_set_local_var_str(const char *name, int len, zval *value, int force TSRMLS_DC) /* {{{ */
+ZEND_API int zend_set_local_var_str(const char *name, size_t len, zval *value, int force TSRMLS_DC) /* {{{ */
{
zend_execute_data *execute_data = EG(current_execute_data);
diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c
index 2d1810ef78..c3827c5c51 100644
--- a/Zend/zend_generators.c
+++ b/Zend/zend_generators.c
@@ -671,7 +671,7 @@ void zend_register_generator_ce(TSRMLS_D) /* {{{ */
INIT_CLASS_ENTRY(ce, "Generator", generator_functions);
zend_ce_generator = zend_register_internal_class(&ce TSRMLS_CC);
- zend_ce_generator->ce_flags |= ZEND_ACC_FINAL_CLASS;
+ zend_ce_generator->ce_flags |= ZEND_ACC_FINAL;
zend_ce_generator->create_object = zend_generator_create;
zend_ce_generator->serialize = zend_class_serialize_deny;
zend_ce_generator->unserialize = zend_class_unserialize_deny;
diff --git a/Zend/zend_indent.c b/Zend/zend_indent.c
index b5884c72c0..22cc4d2b9e 100644
--- a/Zend/zend_indent.c
+++ b/Zend/zend_indent.c
@@ -34,7 +34,7 @@
static void handle_whitespace(unsigned int *emit_whitespace)
{
unsigned char c;
- int i;
+ unsigned int i;
for (c=0; c<128; c++) {
if (emit_whitespace[c]>0) {
diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c
index 8f0d9fecb7..8963d2b93b 100644
--- a/Zend/zend_inheritance.c
+++ b/Zend/zend_inheritance.c
@@ -591,7 +591,7 @@ static zend_bool do_inherit_method_check(HashTable *child_function_table, zend_f
}
/* }}} */
-static zend_bool do_inherit_property_access_check(HashTable *target_ht, zend_property_info *parent_info, zend_string *key, zend_class_entry *ce TSRMLS_DC) /* {{{ */
+static zend_bool do_inherit_property_access_check(zend_property_info *parent_info, zend_string *key, zend_class_entry *ce TSRMLS_DC) /* {{{ */
{
zend_property_info *child_info;
zend_class_entry *parent_ce = ce->parent;
@@ -727,7 +727,7 @@ ZEND_API void zend_do_inheritance(zend_class_entry *ce, zend_class_entry *parent
&& !(parent_ce->ce_flags & ZEND_ACC_INTERFACE)) {
zend_error_noreturn(E_COMPILE_ERROR, "Interface %s may not inherit from class (%s)", ce->name->val, parent_ce->name->val);
}
- if (parent_ce->ce_flags & ZEND_ACC_FINAL_CLASS) {
+ if (parent_ce->ce_flags & ZEND_ACC_FINAL) {
zend_error_noreturn(E_COMPILE_ERROR, "Class %s may not inherit from final class (%s)", ce->name->val, parent_ce->name->val);
}
@@ -831,7 +831,7 @@ ZEND_API void zend_do_inheritance(zend_class_entry *ce, zend_class_entry *parent
} ZEND_HASH_FOREACH_END();
ZEND_HASH_FOREACH_STR_KEY_PTR(&parent_ce->properties_info, key, property_info) {
- if (do_inherit_property_access_check(&ce->properties_info, property_info, key, ce TSRMLS_CC)) {
+ if (do_inherit_property_access_check(property_info, key, ce TSRMLS_CC)) {
if (ce->type & ZEND_INTERNAL_CLASS) {
property_info = zend_duplicate_property_info_internal(property_info);
} else {
@@ -992,7 +992,7 @@ static void zend_add_magic_methods(zend_class_entry* ce, zend_string* mname, zen
if (!strncmp(mname->val, ZEND_CLONE_FUNC_NAME, mname->len)) {
ce->clone = fe; fe->common.fn_flags |= ZEND_ACC_CLONE;
} else if (!strncmp(mname->val, ZEND_CONSTRUCTOR_FUNC_NAME, mname->len)) {
- if (ce->constructor) {
+ if (ce->constructor && (!ce->parent || ce->constructor != ce->parent->constructor)) {
zend_error_noreturn(E_COMPILE_ERROR, "%s has colliding constructor definitions coming from traits", ce->name->val);
}
ce->constructor = fe; fe->common.fn_flags |= ZEND_ACC_CTOR;
@@ -1019,7 +1019,7 @@ static void zend_add_magic_methods(zend_class_entry* ce, zend_string* mname, zen
zend_str_tolower_copy(lowercase_name->val, ce->name->val, ce->name->len);
lowercase_name = zend_new_interned_string(lowercase_name TSRMLS_CC);
if (!memcmp(mname->val, lowercase_name->val, mname->len)) {
- if (ce->constructor) {
+ if (ce->constructor && (!ce->parent || ce->constructor != ce->parent->constructor)) {
zend_error_noreturn(E_COMPILE_ERROR, "%s has colliding constructor definitions coming from traits", ce->name->val);
}
ce->constructor = fe;
diff --git a/Zend/zend_interfaces.c b/Zend/zend_interfaces.c
index f076289201..16ae8ea3c5 100644
--- a/Zend/zend_interfaces.c
+++ b/Zend/zend_interfaces.c
@@ -499,7 +499,7 @@ static int zend_implement_serializable(zend_class_entry *interface, zend_class_e
/* {{{ function tables */
const zend_function_entry zend_funcs_aggregate[] = {
ZEND_ABSTRACT_ME(iterator, getIterator, NULL)
- {NULL, NULL, NULL}
+ ZEND_FE_END
};
const zend_function_entry zend_funcs_iterator[] = {
@@ -508,7 +508,7 @@ const zend_function_entry zend_funcs_iterator[] = {
ZEND_ABSTRACT_ME(iterator, key, NULL)
ZEND_ABSTRACT_ME(iterator, valid, NULL)
ZEND_ABSTRACT_ME(iterator, rewind, NULL)
- {NULL, NULL, NULL}
+ ZEND_FE_END
};
const zend_function_entry *zend_funcs_traversable = NULL;
@@ -531,7 +531,7 @@ const zend_function_entry zend_funcs_arrayaccess[] = {
ZEND_ABSTRACT_ME(arrayaccess, offsetGet, arginfo_arrayaccess_offset_get)
ZEND_ABSTRACT_ME(arrayaccess, offsetSet, arginfo_arrayaccess_offset_value)
ZEND_ABSTRACT_ME(arrayaccess, offsetUnset, arginfo_arrayaccess_offset)
- {NULL, NULL, NULL}
+ ZEND_FE_END
};
ZEND_BEGIN_ARG_INFO(arginfo_serializable_serialize, 0)
@@ -541,7 +541,7 @@ ZEND_END_ARG_INFO()
const zend_function_entry zend_funcs_serializable[] = {
ZEND_ABSTRACT_ME(serializable, serialize, NULL)
ZEND_FENTRY(unserialize, NULL, arginfo_serializable_serialize, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT|ZEND_ACC_CTOR)
- {NULL, NULL, NULL}
+ ZEND_FE_END
};
/* }}} */
diff --git a/Zend/zend_iterators.c b/Zend/zend_iterators.c
index 8edd5dbdc4..8d81eae3b0 100644
--- a/Zend/zend_iterators.c
+++ b/Zend/zend_iterators.c
@@ -50,7 +50,12 @@ static zend_object_handlers iterator_object_handlers = {
NULL, /* get class name */
NULL, /* compare */
NULL, /* cast */
- NULL /* count */
+ NULL, /* count */
+ NULL, /* get_debug_info */
+ NULL, /* get_closure */
+ NULL, /* get_gc */
+ NULL, /* do_operation */
+ NULL /* compare */
};
ZEND_API void zend_register_iterator_wrapper(TSRMLS_D)
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index 11c9827d5b..caa611460d 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -431,7 +431,7 @@ class_declaration_statement:
class_type:
T_CLASS { $$ = 0; }
| T_ABSTRACT T_CLASS { $$ = ZEND_ACC_EXPLICIT_ABSTRACT_CLASS; }
- | T_FINAL T_CLASS { $$ = ZEND_ACC_FINAL_CLASS; }
+ | T_FINAL T_CLASS { $$ = ZEND_ACC_FINAL; }
| T_TRAIT { $$ = ZEND_ACC_TRAIT; }
;
diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h
index ccd00b4e52..d27f5bf6f6 100644
--- a/Zend/zend_operators.h
+++ b/Zend/zend_operators.h
@@ -89,6 +89,13 @@ ZEND_API zend_uchar _is_numeric_string_ex(const char *str, size_t length, zend_l
END_EXTERN_C()
+#if SIZEOF_ZEND_LONG == 4
+# define ZEND_DOUBLE_FITS_LONG(d) (!((d) > ZEND_LONG_MAX || (d) < ZEND_LONG_MIN))
+#else
+ /* >= as (double)ZEND_LONG_MAX is outside signed range */
+# define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= ZEND_LONG_MAX || (d) < ZEND_LONG_MIN))
+#endif
+
#if ZEND_DVAL_TO_LVAL_CAST_OK
static zend_always_inline zend_long zend_dval_to_lval(double d)
{
@@ -103,7 +110,7 @@ static zend_always_inline zend_long zend_dval_to_lval(double d)
{
if (UNEXPECTED(!zend_finite(d)) || UNEXPECTED(zend_isnan(d))) {
return 0;
- } else if (d > ZEND_LONG_MAX || d < ZEND_LONG_MIN) {
+ } else if (!ZEND_DOUBLE_FITS_LONG(d)) {
double two_pow_32 = pow(2., 32.),
dmod;
@@ -122,8 +129,7 @@ static zend_always_inline zend_long zend_dval_to_lval(double d)
{
if (UNEXPECTED(!zend_finite(d)) || UNEXPECTED(zend_isnan(d))) {
return 0;
- /* >= as (double)ZEND_LONG_MAX is outside signed range */
- } else if (d >= ZEND_LONG_MAX || d < ZEND_LONG_MIN) {
+ } else if (!ZEND_DOUBLE_FITS_LONG(d)) {
double two_pow_64 = pow(2., 64.),
dmod;
diff --git a/Zend/zend_virtual_cwd.c b/Zend/zend_virtual_cwd.c
index 509b33e369..33bfddc3f9 100644
--- a/Zend/zend_virtual_cwd.c
+++ b/Zend/zend_virtual_cwd.c
@@ -620,7 +620,7 @@ static inline zend_ulong realpath_cache_key(const char *path, int path_len) /* {
CWD_API void realpath_cache_clean(TSRMLS_D) /* {{{ */
{
- int i;
+ uint32_t i;
for (i = 0; i < sizeof(CWDG(realpath_cache))/sizeof(CWDG(realpath_cache)[0]); i++) {
realpath_cache_bucket *p = CWDG(realpath_cache)[i];
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 223ecf9a0d..0bf218d581 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -5513,8 +5513,8 @@ ZEND_VM_HANDLER(105, ZEND_TICKS, ANY, ANY)
USE_OPLINE
SAVE_OPLINE();
- if (++EG(ticks_count)>=opline->extended_value) {
- EG(ticks_count)=0;
+ if ((uint32_t)++EG(ticks_count) >= opline->extended_value) {
+ EG(ticks_count) = 0;
if (zend_ticks_function) {
zend_ticks_function(opline->extended_value TSRMLS_CC);
}
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 408b59d692..038953ccd4 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -1144,8 +1144,8 @@ static int ZEND_FASTCALL ZEND_TICKS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
SAVE_OPLINE();
- if (++EG(ticks_count)>=opline->extended_value) {
- EG(ticks_count)=0;
+ if ((uint32_t)++EG(ticks_count) >= opline->extended_value) {
+ EG(ticks_count) = 0;
if (zend_ticks_function) {
zend_ticks_function(opline->extended_value TSRMLS_CC);
}
diff --git a/ext/date/tests/bug36988.phpt b/ext/date/tests/bug36988.phpt
index c37d1fb768..5fcacd6737 100644
--- a/ext/date/tests/bug36988.phpt
+++ b/ext/date/tests/bug36988.phpt
@@ -1,11 +1,12 @@
--TEST--
Bug #36988 (mktime freezes on long numbers)
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 4) echo "skip this test is for 32-bit only"; ?>
--FILE--
<?php
date_default_timezone_set('GMT');
$start = microtime(true);
$a = mktime(1, 1, 1, 1, 1, 11111111111);
-echo (microtime(true) - $start) < 1 ? "smaller than one second" : "more than a second";
?>
---EXPECT--
-smaller than one second
+--EXPECTF--
+Warning: mktime() expects parameter 6 to be long, double given in %s on line %d
diff --git a/ext/date/tests/bug52062.phpt b/ext/date/tests/bug52062.phpt
index 81e767b0f0..9d35a2942f 100644
--- a/ext/date/tests/bug52062.phpt
+++ b/ext/date/tests/bug52062.phpt
@@ -2,7 +2,7 @@
Bug #52062 (large timestamps with DateTime::getTimestamp and DateTime::setTimestamp) (32 bit)
--SKIPIF--
<?php
-if (PHP_INT_SIZE == 8) die('skip 32-bit only');
+if (PHP_INT_SIZE != 4) die('skip 32-bit only');
?>
--INI--
date.timezone=UTC
@@ -20,10 +20,12 @@ var_dump($d->getTimestamp());
$i = new DateInterval('PT100000000000S');
var_dump($i->format('%s'));
?>
---EXPECT--
+--EXPECTF--
string(32) "5138-11-16 09:46:40 100000000000"
bool(false)
string(12) "100000000000"
-string(30) "2008-07-11 04:56:32 1215752192"
-int(1215752192)
-string(10) "1215752192"
+
+Warning: DateTime::setTimestamp() expects parameter 1 to be long, double given in %s on line %d
+string(32) "5138-11-16 09:46:40 100000000000"
+bool(false)
+string(10) "1215752192" \ No newline at end of file
diff --git a/ext/date/tests/date_sunrise_variation2.phpt b/ext/date/tests/date_sunrise_variation2.phpt
index b613b35f96..6af0fbd84e 100644
--- a/ext/date/tests/date_sunrise_variation2.phpt
+++ b/ext/date/tests/date_sunrise_variation2.phpt
@@ -1,5 +1,7 @@
--TEST--
Test date_sunrise() function : usage variation - Passing unexpected values to second argument format.
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 4) echo "skip this test is for 32-bit only"; ?>
--FILE--
<?php
/* Prototype : mixed date_sunrise(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])
@@ -114,12 +116,12 @@ bool(false)
--float 12.3456789000e10--
-Warning: date_sunrise(): Wrong return format given, pick one of SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING or SUNFUNCS_RET_DOUBLE in %s on line %d
+Warning: date_sunrise() expects parameter 2 to be long, double given in %s on line %d
bool(false)
--float -12.3456789000e10--
-Warning: date_sunrise(): Wrong return format given, pick one of SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING or SUNFUNCS_RET_DOUBLE in %s on line %d
+Warning: date_sunrise() expects parameter 2 to be long, double given in %s on line %d
bool(false)
--float .5--
diff --git a/ext/date/tests/date_sunrise_variation9.phpt b/ext/date/tests/date_sunrise_variation9.phpt
index 49af06d524..f85032620b 100644
--- a/ext/date/tests/date_sunrise_variation9.phpt
+++ b/ext/date/tests/date_sunrise_variation9.phpt
@@ -1,5 +1,7 @@
--TEST--
Test date_sunrise() function : usage variation - Passing high positive and negative float values to time argument.
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 4) echo "skip this test is for 32-bit only"; ?>
--FILE--
<?php
/* Prototype : mixed date_sunrise(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])
@@ -32,16 +34,28 @@ var_dump( date_sunrise($time, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $ze
?>
===DONE===
---EXPECTREGEX--
-\*\*\* Testing date_sunrise\(\) : usage variation \*\*\*
-
--- Testing date_sunrise\(\) function by passing float 12.3456789000e10 value to time --
-string\(5\) "(07:34|07:49)"
-float\((7.566[0-9]*|7.821[0-9]*)\)
-int\((-1097256359|123456811756)\)
-
--- Testing date_sunrise\(\) function by passing float -12.3456789000e10 value to time --
-string\(5\) "(07:42|08:48|08:04)"
-float\((7.713[0-9]*|8.810[0-9]*|8.074[0-9]*)\)
-int\((1097304168|-2147443882|-123456761731)\)
-===DONE===
+--EXPECTF--
+*** Testing date_sunrise() : usage variation ***
+
+-- Testing date_sunrise() function by passing float 12.3456789000e10 value to time --
+
+Warning: date_sunrise() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
+
+Warning: date_sunrise() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
+
+Warning: date_sunrise() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
+
+-- Testing date_sunrise() function by passing float -12.3456789000e10 value to time --
+
+Warning: date_sunrise() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
+
+Warning: date_sunrise() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
+
+Warning: date_sunrise() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
+===DONE=== \ No newline at end of file
diff --git a/ext/date/tests/date_sunset_variation2.phpt b/ext/date/tests/date_sunset_variation2.phpt
index 575b64a22c..50f6a00164 100644
--- a/ext/date/tests/date_sunset_variation2.phpt
+++ b/ext/date/tests/date_sunset_variation2.phpt
@@ -1,5 +1,7 @@
--TEST--
Test date_sunset() function : usage variation - Passing unexpected values to second argument format.
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 4) echo "skip this test is for 32-bit only"; ?>
--FILE--
<?php
/* Prototype : mixed date_sunset(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])
@@ -114,12 +116,12 @@ bool(false)
--float 12.3456789000e10--
-Warning: date_sunset(): Wrong return format given, pick one of SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING or SUNFUNCS_RET_DOUBLE in %s on line %d
+Warning: date_sunset() expects parameter 2 to be long, double given in %s on line %d
bool(false)
--float -12.3456789000e10--
-Warning: date_sunset(): Wrong return format given, pick one of SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING or SUNFUNCS_RET_DOUBLE in %s on line %d
+Warning: date_sunset() expects parameter 2 to be long, double given in %s on line %d
bool(false)
--float .5--
@@ -208,4 +210,4 @@ int(1218199253)
--unset var--
int(1218199253)
-===DONE===
+===DONE=== \ No newline at end of file
diff --git a/ext/date/tests/date_sunset_variation9.phpt b/ext/date/tests/date_sunset_variation9.phpt
index 59a4b584a5..db0f6e25ed 100644
--- a/ext/date/tests/date_sunset_variation9.phpt
+++ b/ext/date/tests/date_sunset_variation9.phpt
@@ -1,5 +1,7 @@
--TEST--
Test date_sunset() function : usage variation - Passing high positive and negative float values to time argument.
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 4) echo "skip this test is for 32-bit only"; ?>
--FILE--
<?php
/* Prototype : mixed date_sunset(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])
@@ -32,16 +34,28 @@ var_dump( date_sunset($time, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $zen
?>
===DONE===
---EXPECTREGEX--
-\*\*\* Testing date_sunset\(\) : usage variation \*\*\*
-
--- Testing date_sunset\(\) function by passing float 12.3456789000e10 value to time --
-string\(5\) "(19:49|19:28)"
-float\((19.830[0-9]*|19.830[0-9]*|19.480[0-9]*)\)
-int\((-1097212211|123456853728)\)
-
--- Testing date_sunset\(\) function by passing float -12.3456789000e10 value to time --
-string\(5\) "(19:03|18:12|18:48)"
-float\((19.056[0-9]*|18.213[0-9]*|18.808[0-9]*)\)
-int\((1097345002|-2147410031|-123456723090)\)
+--EXPECTF--
+*** Testing date_sunset() : usage variation ***
+
+-- Testing date_sunset() function by passing float 12.3456789000e10 value to time --
+
+Warning: date_sunset() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
+
+Warning: date_sunset() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
+
+Warning: date_sunset() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
+
+-- Testing date_sunset() function by passing float -12.3456789000e10 value to time --
+
+Warning: date_sunset() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
+
+Warning: date_sunset() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
+
+Warning: date_sunset() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
===DONE===
diff --git a/ext/date/tests/getdate_variation7.phpt b/ext/date/tests/getdate_variation7.phpt
index 2088fa1792..44f3762ff9 100644
--- a/ext/date/tests/getdate_variation7.phpt
+++ b/ext/date/tests/getdate_variation7.phpt
@@ -1,5 +1,7 @@
--TEST--
Test getdate() function : usage variation - Passing high positive and negative float values to timestamp.
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 4) echo "skip this test is for 32-bit only"; ?>
--FILE--
<?php
/* Prototype : array getdate([int timestamp])
@@ -20,59 +22,16 @@ $timestamp = -12.3456789000e10;
var_dump( getdate($timestamp) );
?>
===DONE===
---EXPECTREGEX--
+--EXPECTF--
+*** Testing getdate() : usage variation ***
-\*\*\* Testing getdate\(\) : usage variation \*\*\*
+-- Testing getdate() function by passing float 12.3456789000e10 value to timestamp --
--- Testing getdate\(\) function by passing float 12.3456789000e10 value to timestamp --
-array\(11\) {
- \["seconds"\]=>
- int\((36|0)\)
- \["minutes"\]=>
- int\((43|0)\)
- \["hours"\]=>
- int\((10|6)\)
- \["mday"\]=>
- int\((26|11)\)
- \["wday"\]=>
- int\((2|6)\)
- \["mon"\]=>
- int\(3\)
- \["year"\]=>
- int\((1935|5882)\)
- \["yday"\]=>
- int\((84|69)\)
- \["weekday"\]=>
- string\((7|8)\) "(Tuesday|Saturday)"
- \["month"\]=>
- string\(5\) "March"
- \[0\]=>
- int\((-1097262584|123456789000)\)
-}
+Warning: getdate() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
--- Testing getdate\(\) function by passing float -12.3456789000e10 value to timestamp --
-array\(11\) {
- \["seconds"\]=>
- int\((44|12|20)\)
- \["minutes"\]=>
- int\((39|23)\)
- \["hours"\]=>
- int\((0|2|5)\)
- \["mday"\]=>
- int\((9|14|23)\)
- \["wday"\]=>
- int\(0\)
- \["mon"\]=>
- int\((10|12)\)
- \["year"\]=>
- int\((2004|1901|-1943)\)
- \["yday"\]=>
- int\((282|347|295)\)
- \["weekday"\]=>
- string\(6\) "Sunday"
- \["month"\]=>
- string\((7|8)\) "(October|December)"
- \[0\]=>
- int\((1097262584|-2147483648|-123456789000)\)
-}
-===DONE===
+-- Testing getdate() function by passing float -12.3456789000e10 value to timestamp --
+
+Warning: getdate() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
+===DONE=== \ No newline at end of file
diff --git a/ext/date/tests/gmdate_variation14.phpt b/ext/date/tests/gmdate_variation14.phpt
index 5b62a8274d..099af0d732 100644
--- a/ext/date/tests/gmdate_variation14.phpt
+++ b/ext/date/tests/gmdate_variation14.phpt
@@ -1,5 +1,7 @@
--TEST--
Test gmdate() function : usage variation - Passing high positive and negetive float values to timestamp.
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 4) echo "skip this test is for 32-bit only"; ?>
--FILE--
<?php
/* Prototype : string gmdate(string format [, long timestamp])
@@ -23,12 +25,16 @@ var_dump( gmdate($format, $timestamp) );
?>
===DONE===
---EXPECTREGEX--
-\*\*\* Testing gmdate\(\) : usage variation \*\*\*
+--EXPECTF--
+*** Testing gmdate() : usage variation ***
--- Testing gmdate\(\) function with float 12.3456789000e10 to timestamp --
-string\((24|25)\) "(1935-03-26T04:50:16\+0000|5882-03-11T00:30:00\+0000)"
+-- Testing gmdate() function with float 12.3456789000e10 to timestamp --
--- Testing gmdate\(\) function with float -12.3456789000e10 to timestamp --
-string\((24|25)\) "(2004-10-08T19:09:44\+0000|1901-12-13T20:45:52\+0000|-1943-10-22T23:30:00\+0000)"
+Warning: gmdate() expects parameter 2 to be long, double given in %s on line %d
+bool(false)
+
+-- Testing gmdate() function with float -12.3456789000e10 to timestamp --
+
+Warning: gmdate() expects parameter 2 to be long, double given in %s on line %d
+bool(false)
===DONE=== \ No newline at end of file
diff --git a/ext/date/tests/gmstrftime_variation2.phpt b/ext/date/tests/gmstrftime_variation2.phpt
index c577fe1d3d..c591dc3b16 100644
--- a/ext/date/tests/gmstrftime_variation2.phpt
+++ b/ext/date/tests/gmstrftime_variation2.phpt
@@ -112,10 +112,14 @@ string(20) "Jan 01 1970 00:00:10"
string(20) "Dec 31 1969 23:59:50"
--float 12.3456789000e10--
-string(20) "Mar 26 1935 04:50:16"
+
+Warning: gmstrftime() expects parameter 2 to be long, double given in %s on line %d
+bool(false)
--float -12.3456789000e10--
-string(20) "Oct 08 2004 19:09:44"
+
+Warning: gmstrftime() expects parameter 2 to be long, double given in %s on line %d
+bool(false)
--float .5--
string(20) "Jan 01 1970 00:00:00"
diff --git a/ext/date/tests/idate_variation3.phpt b/ext/date/tests/idate_variation3.phpt
index 1a2ee1ffd5..fbbfa5ee1e 100644
--- a/ext/date/tests/idate_variation3.phpt
+++ b/ext/date/tests/idate_variation3.phpt
@@ -1,5 +1,7 @@
--TEST--
Test idate() function : usage variation - Passing higher positive and negetive float values to timestamp.
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 4) echo "skip this test is for 32-bit only"; ?>
--FILE--
<?php
/* Prototype : int idate(string format [, int timestamp])
@@ -24,12 +26,16 @@ var_dump( idate($format, $timestamp) );
?>
===DONE===
---EXPECTREGEX--
-\*\*\* Testing idate\(\) : usage variation \*\*\*
+--EXPECTF--
+*** Testing idate() : usage variation ***
--- Testing idate\(\) function with float 12.3456789000e10 to timestamp --
-int\((1935|5882)\)
+-- Testing idate() function with float 12.3456789000e10 to timestamp --
--- Testing idate\(\) function with float -12.3456789000e10 to timestamp --
-int\((2004|1901|-1943)\)
-===DONE===
+Warning: idate() expects parameter 2 to be long, double given in %s on line %d
+bool(false)
+
+-- Testing idate() function with float -12.3456789000e10 to timestamp --
+
+Warning: idate() expects parameter 2 to be long, double given in %s on line %d
+bool(false)
+===DONE=== \ No newline at end of file
diff --git a/ext/date/tests/localtime_variation3.phpt b/ext/date/tests/localtime_variation3.phpt
index 34d8f57f01..b29098d295 100644
--- a/ext/date/tests/localtime_variation3.phpt
+++ b/ext/date/tests/localtime_variation3.phpt
@@ -1,5 +1,7 @@
--TEST--
Test localtime() function : usage variation - Passing higher positive and negetive float values to timestamp.
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 4) echo "skip this test is for 32-bit only"; ?>
--FILE--
<?php
/* Prototype : array localtime([int timestamp [, bool associative_array]])
@@ -27,90 +29,22 @@ var_dump( localtime($timestamp, $is_associative) );
?>
===DONE===
---EXPECTREGEX--
-\*\*\* Testing localtime\(\) : usage variation \*\*\*
+--EXPECTF--
+*** Testing localtime() : usage variation ***
--- Testing localtime\(\) function with 'float 12.3456789000e10' to timestamp --
-array\(9\) {
- \[0\]=>
- int\((16|0)\)
- \[1\]=>
- int\((50|30)\)
- \[2\]=>
- int\((4|0)\)
- \[3\]=>
- int\((26|11)\)
- \[4\]=>
- int\(2\)
- \[5\]=>
- int\((35|3982)\)
- \[6\]=>
- int\((2|6)\)
- \[7\]=>
- int\((84|69)\)
- \[8\]=>
- int\(0\)
-}
-array\(9\) {
- \["tm_sec"\]=>
- int\((16|0)\)
- \["tm_min"\]=>
- int\((50|30)\)
- \["tm_hour"\]=>
- int\((4|0)\)
- \["tm_mday"\]=>
- int\((26|11)\)
- \["tm_mon"\]=>
- int\(2\)
- \["tm_year"\]=>
- int\((35|3982)\)
- \["tm_wday"\]=>
- int\((2|6)\)
- \["tm_yday"\]=>
- int\((84|69)\)
- \["tm_isdst"\]=>
- int\(0\)
-}
+-- Testing localtime() function with 'float 12.3456789000e10' to timestamp --
--- Testing localtime\(\) function with 'float -12.3456789000e10' to timestamp --
-array\(9\) {
- \[0\]=>
- int\((44|52|0)\)
- \[1\]=>
- int\((9|45|30)\)
- \[2\]=>
- int\((19|20|23)\)
- \[3\]=>
- int\((8|13|22)\)
- \[4\]=>
- int\((9|11)\)
- \[5\]=>
- int\((104|1|-3843)\)
- \[6\]=>
- int\(6\)
- \[7\]=>
- int\((281|346|294)\)
- \[8\]=>
- int\(0\)
-}
-array\(9\) {
- \["tm_sec"\]=>
- int\((44|52|0)\)
- \["tm_min"\]=>
- int\((9|45|30)\)
- \["tm_hour"\]=>
- int\((19|20|23)\)
- \["tm_mday"\]=>
- int\((8|13|22)\)
- \["tm_mon"\]=>
- int\((9|11)\)
- \["tm_year"\]=>
- int\((104|1|-3843)\)
- \["tm_wday"\]=>
- int\(6\)
- \["tm_yday"\]=>
- int\((281|346|294)\)
- \["tm_isdst"\]=>
- int\(0\)
-}
+Warning: localtime() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
+
+Warning: localtime() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
+
+-- Testing localtime() function with 'float -12.3456789000e10' to timestamp --
+
+Warning: localtime() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
+
+Warning: localtime() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
===DONE===
diff --git a/ext/date/tests/strftime_variation23.phpt b/ext/date/tests/strftime_variation23.phpt
index b7cf8d788e..7e027851dd 100644
--- a/ext/date/tests/strftime_variation23.phpt
+++ b/ext/date/tests/strftime_variation23.phpt
@@ -1,5 +1,7 @@
--TEST--
Test strftime() function : usage variation - Checking large positive and negative float values to timestamp.
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 4) echo "skip this test is for 32-bit only"; ?>
--FILE--
<?php
/* Prototype : string strftime(string format [, int timestamp])
@@ -25,12 +27,16 @@ var_dump( strftime($format, $timestamp) );
?>
===DONE===
---EXPECTREGEX--
-\*\*\* Testing strftime\(\) : usage variation \*\*\*
+--EXPECTF--
+*** Testing strftime() : usage variation ***
--- Testing strftime\(\) function with float 12.3456789000e10 to timestamp --
-string\(\d*\)\s"Mar\s(26|11)\s(1935|5882)\s(04|00):(50|30):(16|00)"
+-- Testing strftime() function with float 12.3456789000e10 to timestamp --
--- Testing strftime\(\) function with float -12.3456789000e10 to timestamp --
-string\(\d*\)\s"(Oct|Dec)\s(08|13|22)\s(2004|1901|-1943)\s(19|20|23):(09|45|30):(44|52|00)"
-===DONE===
+Warning: strftime() expects parameter 2 to be long, double given in %s on line %d
+bool(false)
+
+-- Testing strftime() function with float -12.3456789000e10 to timestamp --
+
+Warning: strftime() expects parameter 2 to be long, double given in %s on line %d
+bool(false)
+===DONE=== \ No newline at end of file
diff --git a/ext/gd/libgd/gd_gif_in.c b/ext/gd/libgd/gd_gif_in.c
index ee88a2fc8e..491e9422db 100644
--- a/ext/gd/libgd/gd_gif_in.c
+++ b/ext/gd/libgd/gd_gif_in.c
@@ -72,8 +72,10 @@ static struct {
#define STACK_SIZE ((1<<(MAX_LWZ_BITS))*2)
+#define CSD_BUF_SIZE 280
+
typedef struct {
- unsigned char buf[280];
+ unsigned char buf[CSD_BUF_SIZE];
int curbit, lastbit, done, last_byte;
} CODE_STATIC_DATA;
@@ -400,7 +402,12 @@ GetCode_(gdIOCtx *fd, CODE_STATIC_DATA *scd, int code_size, int flag, int *ZeroD
ret = 0;
for (i = scd->curbit, j = 0; j < code_size; ++i, ++j)
- ret |= ((scd->buf[ i / 8 ] & (1 << (i % 8))) != 0) << j;
+ if (i < CSD_BUF_SIZE * 8) {
+ ret |= ((scd->buf[i / 8] & (1 << (i % 8))) != 0) << j;
+ } else {
+ ret = -1;
+ break;
+ }
scd->curbit += code_size;
return ret;
diff --git a/ext/gd/tests/imagecreatetruecolor_error2.phpt b/ext/gd/tests/imagecreatetruecolor_error2.phpt
index e4de7e382d..c5a5e69283 100644
--- a/ext/gd/tests/imagecreatetruecolor_error2.phpt
+++ b/ext/gd/tests/imagecreatetruecolor_error2.phpt
@@ -19,6 +19,6 @@ Warning: imagecreatetruecolor(): Invalid image dimensions in %s on line %d
Warning: imagecreatetruecolor(): Invalid image dimensions in %s on line %d
-Warning: imagecreatetruecolor(): Invalid image dimensions in %s on line %d
+Warning: imagecreatetruecolor() expects parameter 1 to be long, double given in %s on line %d
-Warning: imagecreatetruecolor(): Invalid image dimensions in %s on line %d \ No newline at end of file
+Warning: imagecreatetruecolor() expects parameter 2 to be long, double given in %s on line %d
diff --git a/ext/iconv/tests/iconv_mime_decode_headers_variation2.phpt b/ext/iconv/tests/iconv_mime_decode_headers_variation2.phpt
index 5ceb801bed..4c771dbb23 100644
--- a/ext/iconv/tests/iconv_mime_decode_headers_variation2.phpt
+++ b/ext/iconv/tests/iconv_mime_decode_headers_variation2.phpt
@@ -2,6 +2,7 @@
Test iconv_mime_encode() function : usage variations - Pass different data types to mode arg
--SKIPIF--
<?php
+PHP_INT_SIZE == 4 or die('skip');
extension_loaded('iconv') or die('skip');
function_exists('iconv_mime_decode_headers') or die("skip iconv_mime_decode_headers() is not available in this build");
?>
@@ -234,23 +235,9 @@ array(5) {
}
-- Iteration 7 --
-array(5) {
- ["Subject"]=>
- string(13) "A Sample Test"
- ["To"]=>
- string(19) "example@example.com"
- ["Date"]=>
- string(30) "Thu, 1 Jan 1970 00:00:00 +0000"
- ["Message-Id"]=>
- string(21) "<example@example.com>"
- ["Received"]=>
- array(2) {
- [0]=>
- string(204) "from localhost (localhost [127.0.0.1]) by localhost with SMTP id example for <example@example.com>; Thu, 1 Jan 1970 00:00:00 +0000 (UTC) (envelope-from example-return-0000-example=example.com@example.com)"
- [1]=>
- string(57) "(qmail 0 invoked by uid 65534); 1 Thu 2003 00:00:00 +0000"
- }
-}
+
+Warning: iconv_mime_decode_headers() expects parameter 2 to be long, double given in %s on line %d
+bool(false)
-- Iteration 8 --
array(5) {
@@ -476,4 +463,4 @@ array(5) {
Warning: iconv_mime_decode_headers() expects parameter 2 to be long, resource given in %s on line %d
bool(false)
-Done \ No newline at end of file
+Done
diff --git a/ext/iconv/tests/iconv_mime_decode_headers_variation3.phpt b/ext/iconv/tests/iconv_mime_decode_headers_variation3.phpt
index c4a9cc434a..0f604c4f2f 100644
--- a/ext/iconv/tests/iconv_mime_decode_headers_variation3.phpt
+++ b/ext/iconv/tests/iconv_mime_decode_headers_variation3.phpt
@@ -2,6 +2,7 @@
Test iconv_mime_encode() function : usage variations - Pass different data types to charset arg
--SKIPIF--
<?php
+PHP_INT_SIZE == 4 or die('skip');
extension_loaded('iconv') or die('skip');
function_exists('iconv_mime_decode_headers') or die("skip iconv_mime_decode_headers() is not available in this build");
?>
@@ -237,23 +238,9 @@ array(5) {
}
-- Iteration 7 --
-array(5) {
- ["Subject"]=>
- string(13) "A Sample Test"
- ["To"]=>
- string(19) "example@example.com"
- ["Date"]=>
- string(30) "Thu, 1 Jan 1970 00:00:00 +0000"
- ["Message-Id"]=>
- string(21) "<example@example.com>"
- ["Received"]=>
- array(2) {
- [0]=>
- string(204) "from localhost (localhost [127.0.0.1]) by localhost with SMTP id example for <example@example.com>; Thu, 1 Jan 1970 00:00:00 +0000 (UTC) (envelope-from example-return-0000-example=example.com@example.com)"
- [1]=>
- string(57) "(qmail 0 invoked by uid 65534); 1 Thu 2003 00:00:00 +0000"
- }
-}
+
+Warning: iconv_mime_decode_headers() expects parameter 2 to be long, double given in %s on line %d
+bool(false)
-- Iteration 8 --
array(5) {
@@ -479,4 +466,4 @@ array(5) {
Warning: iconv_mime_decode_headers() expects parameter 2 to be long, resource given in %s on line %d
bool(false)
-Done \ No newline at end of file
+Done
diff --git a/ext/iconv/tests/iconv_mime_decode_variation2.phpt b/ext/iconv/tests/iconv_mime_decode_variation2.phpt
index 1d828227ae..a779ecc436 100644
--- a/ext/iconv/tests/iconv_mime_decode_variation2.phpt
+++ b/ext/iconv/tests/iconv_mime_decode_variation2.phpt
@@ -2,6 +2,7 @@
Test iconv_mime_decode() function : usage variations - Pass different data types to mode arg
--SKIPIF--
<?php
+PHP_INT_SIZE == 4 or die('skip');
extension_loaded('iconv') or die('skip');
function_exists('iconv_mime_decode') or die("skip iconv_mime_decode() is not available in this build");
?>
@@ -126,7 +127,9 @@ string(52) "5375626a6563743a205072c3bc66756e67205072c3bc66756e67"
string(52) "5375626a6563743a205072c3bc66756e67205072c3bc66756e67"
-- Iteration 7 --
-string(52) "5375626a6563743a205072c3bc66756e67205072c3bc66756e67"
+
+Warning: iconv_mime_decode() expects parameter 2 to be long, double given in %s on line %d
+string(0) ""
-- Iteration 8 --
string(52) "5375626a6563743a205072c3bc66756e67205072c3bc66756e67"
diff --git a/ext/iconv/tests/iconv_strpos_variation3.phpt b/ext/iconv/tests/iconv_strpos_variation3.phpt
index 3c333bfa57..221b3a733f 100644
--- a/ext/iconv/tests/iconv_strpos_variation3.phpt
+++ b/ext/iconv/tests/iconv_strpos_variation3.phpt
@@ -131,7 +131,7 @@ bool(false)
-- Iteration 7 --
-Warning: iconv_strpos(): Offset not contained in string. in %s on line %d
+Warning: iconv_strpos() expects parameter 3 to be long, double given in %s on line %d
bool(false)
-- Iteration 8 --
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
index 490da81ad0..88b79451b2 100644
--- a/ext/mysqli/mysqli.c
+++ b/ext/mysqli/mysqli.c
@@ -628,7 +628,7 @@ PHP_MINIT_FUNCTION(mysqli)
zend_declare_property_null(ce, "embedded", sizeof("embedded") - 1, ZEND_ACC_PUBLIC TSRMLS_CC);
zend_declare_property_null(ce, "reconnect", sizeof("reconnect") - 1, ZEND_ACC_PUBLIC TSRMLS_CC);
zend_declare_property_null(ce, "report_mode", sizeof("report_mode") - 1, ZEND_ACC_PUBLIC TSRMLS_CC);
- ce->ce_flags |= ZEND_ACC_FINAL_CLASS;
+ ce->ce_flags |= ZEND_ACC_FINAL;
zend_hash_add_ptr(&classes, ce->name, &mysqli_driver_properties);
REGISTER_MYSQLI_CLASS_ENTRY("mysqli", mysqli_link_class_entry, mysqli_link_methods);
@@ -658,7 +658,7 @@ PHP_MINIT_FUNCTION(mysqli)
REGISTER_MYSQLI_CLASS_ENTRY("mysqli_warning", mysqli_warning_class_entry, mysqli_warning_methods);
ce = mysqli_warning_class_entry;
- ce->ce_flags |= ZEND_ACC_FINAL_CLASS | ZEND_ACC_PROTECTED;
+ ce->ce_flags |= ZEND_ACC_FINAL;
zend_hash_init(&mysqli_warning_properties, 0, NULL, free_prop_handler, 1);
MYSQLI_ADD_PROPERTIES(&mysqli_warning_properties, mysqli_warning_property_entries);
zend_declare_property_null(ce, "message", sizeof("message") - 1, ZEND_ACC_PUBLIC TSRMLS_CC);
diff --git a/ext/mysqli/tests/mysqli_field_seek.phpt b/ext/mysqli/tests/mysqli_field_seek.phpt
index 449d2f90d4..44f25bcfed 100644
--- a/ext/mysqli/tests/mysqli_field_seek.phpt
+++ b/ext/mysqli/tests/mysqli_field_seek.phpt
@@ -218,8 +218,8 @@ Warning: mysqli_field_seek(): Invalid field offset in %s on line %d
bool(false)
bool(false)
-Warning: mysqli_field_seek(): Invalid field offset in %s on line %d
-bool(false)
+Warning: mysqli_field_seek() expects parameter 2 to be long, double given in %s on line %d
+NULL
bool(true)
object(stdClass)#%d (13) {
[%u|b%"name"]=>
diff --git a/ext/mysqli/tests/mysqli_stmt_get_result_seek.phpt b/ext/mysqli/tests/mysqli_stmt_get_result_seek.phpt
index ffb655d5fa..88add0aba5 100644
--- a/ext/mysqli/tests/mysqli_stmt_get_result_seek.phpt
+++ b/ext/mysqli/tests/mysqli_stmt_get_result_seek.phpt
@@ -67,8 +67,8 @@ if (!function_exists('mysqli_stmt_get_result'))
if (false !== ($tmp = $res->data_seek($res->num_rows + 1)))
printf("[012] Expecting boolean/false got %s/%s\n", gettype($tmp), $tmp);
- if (false !== ($tmp = $res->data_seek(PHP_INT_MAX + 1)))
- printf("[013] Expecting boolean/false got %s/%s\n", gettype($tmp), $tmp);
+ if (NULL !== ($tmp = $res->data_seek(PHP_INT_MAX + 1)))
+ printf("[013] Expecting NULL got %s/%s\n", gettype($tmp), $tmp);
for ($i = 0; $i < 100; $i++) {
/* intentionally out of range! */
@@ -118,6 +118,7 @@ if (!function_exists('mysqli_stmt_get_result'))
require_once("clean_table.inc");
?>
--EXPECTF--
+Warning: mysqli_result::data_seek() expects parameter 1 to be long, double given in %s on line %d
Warning: mysqli_data_seek(): Couldn't fetch mysqli_result in %s on line %d
@@ -126,4 +127,4 @@ Warning: mysqli_result::fetch_array(): Couldn't fetch mysqli_result in %s on lin
Warning: mysqli_data_seek(): Couldn't fetch mysqli_result in %s on line %d
Warning: mysqli_result::fetch_array(): Couldn't fetch mysqli_result in %s on line %d
-done! \ No newline at end of file
+done!
diff --git a/ext/mysqli/tests/mysqli_stmt_send_long_data.phpt b/ext/mysqli/tests/mysqli_stmt_send_long_data.phpt
index 7e2f8603a8..1fc2745511 100644
--- a/ext/mysqli/tests/mysqli_stmt_send_long_data.phpt
+++ b/ext/mysqli/tests/mysqli_stmt_send_long_data.phpt
@@ -80,8 +80,8 @@ require_once('skipifconnectfailure.inc');
printf("[012] Expecting boolean/false, got %s/%s. [%d] %s\n",
gettype($tmp), $tmp, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
- if (false !== ($tmp = @mysqli_stmt_send_long_data($stmt, PHP_INT_MAX + 1, $blob)))
- printf("[013] Expecting boolean/false, got %s/%s. [%d] %s\n",
+ if (NULL !== ($tmp = @mysqli_stmt_send_long_data($stmt, PHP_INT_MAX + 1, $blob)))
+ printf("[013] Expecting NULL, got %s/%s. [%d] %s\n",
gettype($tmp), $tmp, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
if (false !== ($tmp = mysqli_stmt_send_long_data($stmt, 999, $blob)))
@@ -132,4 +132,4 @@ require_once('skipifconnectfailure.inc');
?>
--EXPECTF--
Warning: mysqli_stmt_send_long_data(): Invalid parameter number in %s on line %d
-done! \ No newline at end of file
+done!
diff --git a/ext/pcntl/pcntl.c b/ext/pcntl/pcntl.c
index 301002132c..1b5efed1c1 100644
--- a/ext/pcntl/pcntl.c
+++ b/ext/pcntl/pcntl.c
@@ -1212,6 +1212,7 @@ static void pcntl_signal_handler(int signo)
PCNTL_G(head) = psig;
}
PCNTL_G(tail) = psig;
+ PCNTL_G(pending_signals) = 1;
}
void pcntl_signal_dispatch()
@@ -1221,6 +1222,10 @@ void pcntl_signal_dispatch()
sigset_t mask;
sigset_t old_mask;
TSRMLS_FETCH();
+
+ if(!PCNTL_G(pending_signals)) {
+ return;
+ }
/* Mask all signals */
sigfillset(&mask);
@@ -1258,6 +1263,8 @@ void pcntl_signal_dispatch()
queue = next;
}
+ PCNTL_G(pending_signals) = 0;
+
/* Re-enable queue */
PCNTL_G(processing_signal_queue) = 0;
diff --git a/ext/pcntl/php_pcntl.h b/ext/pcntl/php_pcntl.h
index d02d6867f4..fcae3e0466 100644
--- a/ext/pcntl/php_pcntl.h
+++ b/ext/pcntl/php_pcntl.h
@@ -69,6 +69,7 @@ ZEND_BEGIN_MODULE_GLOBALS(pcntl)
int processing_signal_queue;
struct php_pcntl_pending_signal *head, *tail, *spares;
int last_error;
+ volatile char pending_signals;
ZEND_END_MODULE_GLOBALS(pcntl)
#ifdef ZTS
diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c
index 27cc157ed7..1491c80cfd 100644
--- a/ext/pdo/pdo_stmt.c
+++ b/ext/pdo/pdo_stmt.c
@@ -2292,7 +2292,7 @@ void pdo_stmt_init(TSRMLS_D)
INIT_CLASS_ENTRY(ce, "PDORow", pdo_row_functions);
pdo_row_ce = zend_register_internal_class(&ce TSRMLS_CC);
- pdo_row_ce->ce_flags |= ZEND_ACC_FINAL_CLASS; /* when removing this a lot of handlers need to be redone */
+ pdo_row_ce->ce_flags |= ZEND_ACC_FINAL; /* when removing this a lot of handlers need to be redone */
pdo_row_ce->create_object = pdo_row_new;
pdo_row_ce->serialize = pdo_row_serialize;
}
diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c
index f82b825631..d23c7cd6c6 100755
--- a/ext/phar/phar_object.c
+++ b/ext/phar/phar_object.c
@@ -5308,11 +5308,11 @@ void phar_object_init(TSRMLS_D) /* {{{ */
#else
INIT_CLASS_ENTRY(ce, "Phar", php_archive_methods);
phar_ce_archive = zend_register_internal_class(&ce TSRMLS_CC);
- phar_ce_archive->ce_flags |= ZEND_ACC_FINAL_CLASS;
+ phar_ce_archive->ce_flags |= ZEND_ACC_FINAL;
INIT_CLASS_ENTRY(ce, "PharData", php_archive_methods);
phar_ce_data = zend_register_internal_class(&ce TSRMLS_CC);
- phar_ce_data->ce_flags |= ZEND_ACC_FINAL_CLASS;
+ phar_ce_data->ce_flags |= ZEND_ACC_FINAL;
#endif
REGISTER_PHAR_CLASS_CONST_LONG(phar_ce_archive, "BZ2", PHAR_ENT_COMPRESSED_BZ2)
diff --git a/ext/posix/tests/posix_getgrgid_variation.phpt b/ext/posix/tests/posix_getgrgid_variation.phpt
index 5cce391d7b..4923f408c1 100644
--- a/ext/posix/tests/posix_getgrgid_variation.phpt
+++ b/ext/posix/tests/posix_getgrgid_variation.phpt
@@ -1,7 +1,8 @@
--TEST--
Test posix_getgrgid() function : usage variations - parameter types
--SKIPIF--
-<?php
+<?php
+ PHP_INT_SIZE == 4 or die("skip - 32-bit only");
if(!extension_loaded("posix")) print "skip - POSIX extension not loaded";
?>
--FILE--
@@ -95,6 +96,8 @@ Arg value -10.5
valid output
Arg value 101234567000
+
+Warning: posix_getgrgid() expects parameter 1 to be long, double given in %s on line %d
valid output
Arg value 1.07654321E-9
diff --git a/ext/posix/tests/posix_getpgid_variation.phpt b/ext/posix/tests/posix_getpgid_variation.phpt
index b9c92b539a..f96bca29a3 100644
--- a/ext/posix/tests/posix_getpgid_variation.phpt
+++ b/ext/posix/tests/posix_getpgid_variation.phpt
@@ -2,6 +2,7 @@
Test posix_getpgid() function : variation
--SKIPIF--
<?php
+PHP_INT_SIZE == 4 or die("skip - 32-bit only");
if((!extension_loaded("posix")) || (!function_exists("posix_getpgid"))) {
print "skip - POSIX extension not loaded or posix_getpgid() does not exist";
}
@@ -95,6 +96,8 @@ Arg value -10.5
valid output
Arg value 101234567000
+
+Warning: posix_getpgid() expects parameter 1 to be long, double given in %s on line %d
valid output
Arg value 1.07654321E-9
diff --git a/ext/posix/tests/posix_getpwuid_variation.phpt b/ext/posix/tests/posix_getpwuid_variation.phpt
index 8b66f7f3d5..9e0698af42 100644
--- a/ext/posix/tests/posix_getpwuid_variation.phpt
+++ b/ext/posix/tests/posix_getpwuid_variation.phpt
@@ -1,7 +1,8 @@
--TEST--
Test posix_getpwuid() function : usage variations - parameter types
--SKIPIF--
-<?php
+<?php
+ PHP_INT_SIZE == 4 or die("skip - 32-bit only");
if(!extension_loaded("posix")) print "skip - POSIX extension not loaded";
?>
--FILE--
@@ -95,6 +96,8 @@ Arg value -10.5
valid output
Arg value 101234567000
+
+Warning: posix_getpwuid() expects parameter 1 to be long, double given in %s on line %d
valid output
Arg value 1.07654321E-9
diff --git a/ext/posix/tests/posix_kill_variation1.phpt b/ext/posix/tests/posix_kill_variation1.phpt
index 230977a9d0..353c90d7cf 100644
--- a/ext/posix/tests/posix_kill_variation1.phpt
+++ b/ext/posix/tests/posix_kill_variation1.phpt
@@ -1,7 +1,8 @@
--TEST--
Test posix_kill() function : usage variations - first parameter type
--SKIPIF--
-<?php
+<?php
+ PHP_INT_SIZE == 4 or die("skip - 32-bit only");
if(!extension_loaded("posix")) print "skip - POSIX extension not loaded";
?>
--FILE--
@@ -89,6 +90,8 @@ Arg value -10.5
bool(false)
Arg value 101234567000
+
+Warning: posix_kill() expects parameter 1 to be long, double given in %s on line %d
bool(false)
Arg value 1.07654321E-9
diff --git a/ext/posix/tests/posix_kill_variation2.phpt b/ext/posix/tests/posix_kill_variation2.phpt
index c03ead9a4b..6b104ccb22 100644
--- a/ext/posix/tests/posix_kill_variation2.phpt
+++ b/ext/posix/tests/posix_kill_variation2.phpt
@@ -2,6 +2,7 @@
Test posix_kill() function : usage variations - second parameter type
--SKIPIF--
<?php
+ PHP_INT_SIZE == 4 or die("skip - 32-bit only");
if(!extension_loaded("posix")) print "skip - POSIX extension not loaded";
?>
--FILE--
@@ -89,6 +90,8 @@ Arg value -10.5
bool(false)
Arg value 101234567000
+
+Warning: posix_kill() expects parameter 2 to be long, double given in %s on line %d
bool(false)
Arg value 1.07654321E-9
diff --git a/ext/posix/tests/posix_seteuid_variation4.phpt b/ext/posix/tests/posix_seteuid_variation4.phpt
index a6473284d4..de814ce644 100644
--- a/ext/posix/tests/posix_seteuid_variation4.phpt
+++ b/ext/posix/tests/posix_seteuid_variation4.phpt
@@ -2,6 +2,7 @@
Test function posix_seteuid() by substituting argument 1 with float values.
--SKIPIF--
<?php
+ PHP_INT_SIZE == 4 or die("skip - 32-bit only");
if(!extension_loaded("posix")) print "skip - POSIX extension not loaded";
if(posix_geteuid() == 0) print "skip - Cannot run test as root.";
?>
@@ -36,6 +37,10 @@ foreach ( $variation_array as $var ) {
*** Test substituting argument 1 with float values ***
bool(false)
bool(false)
+
+Warning: posix_seteuid() expects parameter 1 to be long, double given in %s on line %d
bool(false)
+
+Warning: posix_seteuid() expects parameter 1 to be long, double given in %s on line %d
bool(false)
bool(false)
diff --git a/ext/posix/tests/posix_setgid_variation4.phpt b/ext/posix/tests/posix_setgid_variation4.phpt
index faae4d4d44..1f02012453 100644
--- a/ext/posix/tests/posix_setgid_variation4.phpt
+++ b/ext/posix/tests/posix_setgid_variation4.phpt
@@ -2,6 +2,7 @@
Test function posix_setgid() by substituting argument 1 with float values.
--SKIPIF--
<?php
+ PHP_INT_SIZE == 4 or die("skip - 32-bit only");
if(!extension_loaded("posix")) print "skip - POSIX extension not loaded";
if(posix_geteuid() == 0) print "skip - Cannot run test as root.";
?>
@@ -35,7 +36,11 @@ foreach ( $variation_array as $var ) {
*** Test substituting argument 1 with float values ***
bool(false)
bool(false)
+
+Warning: posix_setgid() expects parameter 1 to be long, double given in %s on line %d
bool(false)
+
+Warning: posix_setgid() expects parameter 1 to be long, double given in %s on line %d
bool(false)
bool(false)
===DONE===
diff --git a/ext/posix/tests/posix_setuid_variation4.phpt b/ext/posix/tests/posix_setuid_variation4.phpt
index 288ac0d8f1..dbdc6ab7bf 100644
--- a/ext/posix/tests/posix_setuid_variation4.phpt
+++ b/ext/posix/tests/posix_setuid_variation4.phpt
@@ -2,6 +2,7 @@
Test function posix_setuid() by substituting argument 1 with float values.
--SKIPIF--
<?php
+ PHP_INT_SIZE == 4 or die("skip - 32-bit only");
if(!extension_loaded("posix")) print "skip - POSIX extension not loaded";
if(posix_geteuid() == 0) print "skip - Cannot run test as root.";
?>
@@ -36,6 +37,10 @@ foreach ( $variation_array as $var ) {
*** Test substituting argument 1 with float values ***
bool(false)
bool(false)
+
+Warning: posix_setuid() expects parameter 1 to be long, double given in %s on line %d
bool(false)
+
+Warning: posix_setuid() expects parameter 1 to be long, double given in %s on line %d
bool(false)
bool(false)
diff --git a/ext/posix/tests/posix_strerror_variation1.phpt b/ext/posix/tests/posix_strerror_variation1.phpt
index 4d2b526716..9e2099a71e 100644
--- a/ext/posix/tests/posix_strerror_variation1.phpt
+++ b/ext/posix/tests/posix_strerror_variation1.phpt
@@ -1,7 +1,8 @@
--TEST--
Test posix_strerror() function : usage variations
--SKIPIF--
-<?php
+<?php
+ PHP_INT_SIZE == 4 or die("skip - 32-bit only");
if(!extension_loaded("posix")) print "skip - POSIX extension not loaded";
?>
--FILE--
@@ -88,7 +89,9 @@ Arg value -10.5
string
Arg value 101234567000
-string
+
+Warning: posix_strerror() expects parameter 1 to be long, double given in %s on line %d
+boolean
Arg value 1.07654321E-9
string
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index b0498e5532..3ff63b8d69 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -395,7 +395,7 @@ static void _class_string(string *str, zend_class_entry *ce, zval *obj, char *in
if (ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
string_printf(str, "abstract ");
}
- if (ce->ce_flags & ZEND_ACC_FINAL_CLASS) {
+ if (ce->ce_flags & ZEND_ACC_FINAL) {
string_printf(str, "final ");
}
string_printf(str, "class ");
@@ -1557,7 +1557,7 @@ ZEND_METHOD(reflection, getModifierNames)
if (modifiers & (ZEND_ACC_ABSTRACT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
add_next_index_stringl(return_value, "abstract", sizeof("abstract")-1);
}
- if (modifiers & (ZEND_ACC_FINAL | ZEND_ACC_FINAL_CLASS)) {
+ if (modifiers & ZEND_ACC_FINAL) {
add_next_index_stringl(return_value, "final", sizeof("final")-1);
}
if (modifiers & ZEND_ACC_IMPLICIT_PUBLIC) {
@@ -4162,7 +4162,7 @@ ZEND_METHOD(reflection_class, isTrait)
Returns whether this class is final */
ZEND_METHOD(reflection_class, isFinal)
{
- _class_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_FINAL_CLASS);
+ _class_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_FINAL);
}
/* }}} */
@@ -4290,7 +4290,7 @@ ZEND_METHOD(reflection_class, newInstanceWithoutConstructor)
METHOD_NOTSTATIC(reflection_class_ptr);
GET_REFLECTION_OBJECT_PTR(ce);
- if (ce->create_object != NULL && ce->ce_flags & ZEND_ACC_FINAL_CLASS) {
+ if (ce->create_object != NULL && ce->ce_flags & ZEND_ACC_FINAL) {
zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Class %s is an internal class marked as final that cannot be instantiated without invoking its constructor", ce->name->val);
}
@@ -6187,7 +6187,7 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */
REGISTER_REFLECTION_CLASS_CONST_LONG(class, "IS_IMPLICIT_ABSTRACT", ZEND_ACC_IMPLICIT_ABSTRACT_CLASS);
REGISTER_REFLECTION_CLASS_CONST_LONG(class, "IS_EXPLICIT_ABSTRACT", ZEND_ACC_EXPLICIT_ABSTRACT_CLASS);
- REGISTER_REFLECTION_CLASS_CONST_LONG(class, "IS_FINAL", ZEND_ACC_FINAL_CLASS);
+ REGISTER_REFLECTION_CLASS_CONST_LONG(class, "IS_FINAL", ZEND_ACC_FINAL);
INIT_CLASS_ENTRY(_reflection_entry, "ReflectionObject", reflection_object_functions);
_reflection_entry.create_object = reflection_objects_new;
diff --git a/ext/reflection/tests/ReflectionClass_getModifiers_basic.phpt b/ext/reflection/tests/ReflectionClass_getModifiers_basic.phpt
index 65f23c935f..8d2bd47d12 100644
--- a/ext/reflection/tests/ReflectionClass_getModifiers_basic.phpt
+++ b/ext/reflection/tests/ReflectionClass_getModifiers_basic.phpt
@@ -30,7 +30,7 @@ dump_modifiers('g');
--EXPECT--
int(0)
int(32)
-int(64)
+int(4)
int(128)
int(524288)
int(524416)
diff --git a/ext/reflection/tests/ReflectionClass_modifiers_001.phpt b/ext/reflection/tests/ReflectionClass_modifiers_001.phpt
index 941bfe5f2b..1e0a97dfe0 100644
--- a/ext/reflection/tests/ReflectionClass_modifiers_001.phpt
+++ b/ext/reflection/tests/ReflectionClass_modifiers_001.phpt
@@ -37,7 +37,7 @@ int(0)
bool(true)
bool(false)
bool(false)
-int(64)
+int(4)
bool(false)
bool(true)
bool(false)
diff --git a/ext/reflection/tests/ReflectionClass_toString_001.phpt b/ext/reflection/tests/ReflectionClass_toString_001.phpt
index 8dd571c3a9..c47aba8b8d 100644
--- a/ext/reflection/tests/ReflectionClass_toString_001.phpt
+++ b/ext/reflection/tests/ReflectionClass_toString_001.phpt
@@ -14,7 +14,7 @@ Class [ <internal:Reflection> class ReflectionClass implements Reflector ] {
- Constants [3] {
Constant [ integer IS_IMPLICIT_ABSTRACT ] { 16 }
Constant [ integer IS_EXPLICIT_ABSTRACT ] { 32 }
- Constant [ integer IS_FINAL ] { 64 }
+ Constant [ integer IS_FINAL ] { 4 }
}
- Static properties [0] {
diff --git a/ext/simplexml/tests/SimpleXMLElement_xpath.phpt b/ext/simplexml/tests/SimpleXMLElement_xpath.phpt
index 4a613c2e51..afdf95b339 100644
--- a/ext/simplexml/tests/SimpleXMLElement_xpath.phpt
+++ b/ext/simplexml/tests/SimpleXMLElement_xpath.phpt
@@ -1,8 +1,14 @@
--TEST--
Testing xpath() with invalid XML
+--SKIPIF--
+<?php PHP_INT_SIZE == 4 or die("skip - 32-bit only");
--FILE--
<?php
-$xml = @simplexml_load_string("XXXXXXX^",$x,0x6000000000000001);
+$xml = simplexml_load_string("XXXXXXX^",$x,0x6000000000000001);
var_dump($xml->xpath("BBBB"));
---EXPECT--
-bool(false)
+--EXPECTF--
+Notice: Undefined variable: x in %s on line %d
+
+Warning: simplexml_load_string() expects parameter 3 to be long, double given in %s on line %d
+
+Catchable fatal error: Call to a member function xpath() on null in %s on line %d
diff --git a/ext/standard/tests/array/array_change_key_case_variation2.phpt b/ext/standard/tests/array/array_change_key_case_variation2.phpt
index 929ccb1c6a..d1a479f736 100644
--- a/ext/standard/tests/array/array_change_key_case_variation2.phpt
+++ b/ext/standard/tests/array/array_change_key_case_variation2.phpt
@@ -1,5 +1,7 @@
--TEST--
Test array_change_key_case() function : usage variations - Pass different data types as $case arg
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : array array_change_key_case(array $input [, int $case])
@@ -285,4 +287,4 @@ array(3) {
["three"]=>
int(3)
}
-Done \ No newline at end of file
+Done
diff --git a/ext/standard/tests/array/array_chunk_variation2.phpt b/ext/standard/tests/array/array_chunk_variation2.phpt
index 8cfe994404..93d9218296 100644
--- a/ext/standard/tests/array/array_chunk_variation2.phpt
+++ b/ext/standard/tests/array/array_chunk_variation2.phpt
@@ -1,5 +1,7 @@
--TEST--
Test array_chunk() function : usage variations - unexpected values for 'size' argument
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : array array_chunk(array $array, int $size [, bool $preserve_keys])
diff --git a/ext/standard/tests/array/array_fill_variation1.phpt b/ext/standard/tests/array/array_fill_variation1.phpt
index e2d0b6f58c..f36da7d0e6 100644
--- a/ext/standard/tests/array/array_fill_variation1.phpt
+++ b/ext/standard/tests/array/array_fill_variation1.phpt
@@ -124,12 +124,9 @@ array(2) {
int(100)
}
-- Iteration 3 --
-array(2) {
- [-1097262584]=>
- int(100)
- [0]=>
- int(100)
-}
+
+Warning: array_fill() expects parameter 1 to be long, double given in /Users/ajf/Projects/2014/PHP/php-src/ext/standard/tests/array/array_fill_variation1.php on line 92
+NULL
-- Iteration 4 --
array(2) {
[0]=>
diff --git a/ext/standard/tests/array/array_pad_variation2.phpt b/ext/standard/tests/array/array_pad_variation2.phpt
index 0267f203bb..f00c5908d6 100644
--- a/ext/standard/tests/array/array_pad_variation2.phpt
+++ b/ext/standard/tests/array/array_pad_variation2.phpt
@@ -1,5 +1,7 @@
--TEST--
Test array_pad() function : usage variations - unexpected values for 'pad_size' argument(Bug#43482)
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : array array_pad(array $input, int $pad_size, mixed $pad_value)
diff --git a/ext/standard/tests/array/array_rand_variation2.phpt b/ext/standard/tests/array/array_rand_variation2.phpt
index 3340a12b51..fe92181906 100644
--- a/ext/standard/tests/array/array_rand_variation2.phpt
+++ b/ext/standard/tests/array/array_rand_variation2.phpt
@@ -1,5 +1,7 @@
--TEST--
Test array_rand() function : usage variations - unexpected values for 'num_req' parameter
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : mixed array_rand(array input [, int num_req])
diff --git a/ext/standard/tests/array/array_slice_variation2.phpt b/ext/standard/tests/array/array_slice_variation2.phpt
index 217788fec7..8ec240818c 100644
--- a/ext/standard/tests/array/array_slice_variation2.phpt
+++ b/ext/standard/tests/array/array_slice_variation2.phpt
@@ -152,16 +152,9 @@ array(4) {
}
-- Iteration 7 --
-array(4) {
- ["one"]=>
- int(1)
- [0]=>
- int(2)
- ["three"]=>
- int(3)
- [1]=>
- int(4)
-}
+
+Warning: array_slice() expects parameter 2 to be long, double given in %s on line %d
+NULL
-- Iteration 8 --
array(4) {
diff --git a/ext/standard/tests/array/count_variation2.phpt b/ext/standard/tests/array/count_variation2.phpt
index 86aecc07b1..a45bf0cf2c 100644
--- a/ext/standard/tests/array/count_variation2.phpt
+++ b/ext/standard/tests/array/count_variation2.phpt
@@ -1,5 +1,7 @@
--TEST--
Test count() function : usage variations - Pass different data types as $mode arg
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : int count(mixed $var [, int $mode])
@@ -184,4 +186,4 @@ int(3)
Warning: count() expects parameter 2 to be long, resource given in %s on line %d
NULL
-Done \ No newline at end of file
+Done
diff --git a/ext/standard/tests/array/rsort_variation2.phpt b/ext/standard/tests/array/rsort_variation2.phpt
index 2196a6494d..14ca057038 100644
--- a/ext/standard/tests/array/rsort_variation2.phpt
+++ b/ext/standard/tests/array/rsort_variation2.phpt
@@ -1,5 +1,7 @@
--TEST--
Test rsort() function : usage variations - Pass different data types as $sort_flags arg
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : bool rsort(array &$array_arg [, int $sort_flags])
@@ -481,4 +483,4 @@ array(5) {
[4]=>
int(1)
}
-Done \ No newline at end of file
+Done
diff --git a/ext/standard/tests/dir/scandir_variation2.phpt b/ext/standard/tests/dir/scandir_variation2.phpt
index e6033f256c..0d8199b39a 100644
--- a/ext/standard/tests/dir/scandir_variation2.phpt
+++ b/ext/standard/tests/dir/scandir_variation2.phpt
@@ -1,5 +1,7 @@
--TEST--
Test scandir() function : usage variations - diff data types as $sorting_order arg
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]])
diff --git a/ext/standard/tests/file/bug68532.phpt b/ext/standard/tests/file/bug68532.phpt
new file mode 100644
index 0000000000..7d1a0cea9a
--- /dev/null
+++ b/ext/standard/tests/file/bug68532.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #68532: convert.base64-encode omits padding bytes
+--FILE--
+<?php
+$testString = 'test';
+$stream = fopen('php://memory','r+');
+fwrite($stream, $testString);
+rewind($stream);
+$filter = stream_filter_append($stream, 'convert.base64-encode');
+echo "memoryStream = " . stream_get_contents($stream).PHP_EOL;
+
+
+$fileStream = fopen(__DIR__ . '/base64test.txt','w+');
+fwrite($fileStream , $testString);
+rewind($fileStream );
+$filter = stream_filter_append($fileStream , 'convert.base64-encode');
+echo "fileStream = " . stream_get_contents($fileStream ).PHP_EOL;
+?>
+--CLEAN--
+<?php
+unlink(__DIR__ . '/base64test.txt');
+?>
+--EXPECT--
+memoryStream = dGVzdA==
+fileStream = dGVzdA==
diff --git a/ext/standard/tests/file/chmod_variation4.phpt b/ext/standard/tests/file/chmod_variation4.phpt
index 15310f1ca8..70615755c4 100644
--- a/ext/standard/tests/file/chmod_variation4.phpt
+++ b/ext/standard/tests/file/chmod_variation4.phpt
@@ -1,5 +1,7 @@
--TEST--
Test chmod() function : second parameter variation
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : bool chmod(string filename, int mode)
diff --git a/ext/standard/tests/file/file_get_contents_variation5.phpt b/ext/standard/tests/file/file_get_contents_variation5.phpt
index ce88d3c3be..e2dafbe0ee 100644
--- a/ext/standard/tests/file/file_get_contents_variation5.phpt
+++ b/ext/standard/tests/file/file_get_contents_variation5.phpt
@@ -2,6 +2,8 @@
Test file_get_contents() function : usage variation
--CREDITS--
Dave Kelsey <d_kelsey@uk.ibm.com>
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : string file_get_contents(string filename [, bool use_include_path [, resource context [, long offset [, long maxlen]]]])
diff --git a/ext/standard/tests/file/file_variation3.phpt b/ext/standard/tests/file/file_variation3.phpt
index 1dd8520a9e..54635d6d86 100644
--- a/ext/standard/tests/file/file_variation3.phpt
+++ b/ext/standard/tests/file/file_variation3.phpt
@@ -1,5 +1,7 @@
--TEST--
Test file() function : second parameter variation
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : array file(string filename [, int flags[, resource context]])
diff --git a/ext/standard/tests/file/fseek_variation2.phpt b/ext/standard/tests/file/fseek_variation2.phpt
index f454352301..5377843716 100644
--- a/ext/standard/tests/file/fseek_variation2.phpt
+++ b/ext/standard/tests/file/fseek_variation2.phpt
@@ -2,6 +2,8 @@
Test fseek() function : usage variations - different types for whence
--CREDITS--
Dave Kelsey <d_kelsey@uk.ibm.com>
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : proto int fseek(resource fp, int offset [, int whence])
diff --git a/ext/standard/tests/file/mkdir_variation2.phpt b/ext/standard/tests/file/mkdir_variation2.phpt
index ab9a676ac1..48e6cb8722 100644
--- a/ext/standard/tests/file/mkdir_variation2.phpt
+++ b/ext/standard/tests/file/mkdir_variation2.phpt
@@ -2,6 +2,8 @@
Test mkdir() function : usage variation: different types for mode
--CREDITS--
Dave Kelsey <d_kelsey@uk.ibm.com>
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : bool mkdir(string pathname [, int mode [, bool recursive [, resource context]]])
diff --git a/ext/standard/tests/file/pathinfo_variation2.phpt b/ext/standard/tests/file/pathinfo_variation2.phpt
index 9d18a4b79d..897b2d9836 100644
--- a/ext/standard/tests/file/pathinfo_variation2.phpt
+++ b/ext/standard/tests/file/pathinfo_variation2.phpt
@@ -2,6 +2,8 @@
Test pathinfo() function : usage variation
--CREDITS--
Dave Kelsey <d_kelsey@uk.ibm.com>
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : array pathinfo(string path[, int options])
diff --git a/ext/standard/tests/file/stream_rfc2397_007.phpt b/ext/standard/tests/file/stream_rfc2397_007.phpt
index 8a6f3155dd..b62f19cd37 100644
--- a/ext/standard/tests/file/stream_rfc2397_007.phpt
+++ b/ext/standard/tests/file/stream_rfc2397_007.phpt
@@ -27,6 +27,7 @@ foreach($streams as $stream)
var_dump(feof($fp));
echo "===GETC===\n";
var_dump(fgetc($fp));
+ var_dump(fgetc($fp));
var_dump(ftell($fp));
var_dump(feof($fp));
echo "===REWIND===\n";
@@ -94,6 +95,7 @@ int(5)
bool(false)
===GETC===
string(1) "5"
+bool(false)
int(6)
bool(true)
===REWIND===
diff --git a/ext/standard/tests/file/touch_variation3.phpt b/ext/standard/tests/file/touch_variation3.phpt
index 810cd71ef6..87cb199f8f 100644
--- a/ext/standard/tests/file/touch_variation3.phpt
+++ b/ext/standard/tests/file/touch_variation3.phpt
@@ -4,6 +4,7 @@ Test touch() function : usage variation - different types for time
Dave Kelsey <d_kelsey@uk.ibm.com>
--SKIPIF--
<?php
+if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. Not for Windows');
}
diff --git a/ext/standard/tests/file/touch_variation4.phpt b/ext/standard/tests/file/touch_variation4.phpt
index b0238b1759..384b68b384 100644
--- a/ext/standard/tests/file/touch_variation4.phpt
+++ b/ext/standard/tests/file/touch_variation4.phpt
@@ -4,6 +4,7 @@ Test touch() function : usage variation - different types for atime
Dave Kelsey <d_kelsey@uk.ibm.com>
--SKIPIF--
<?php
+if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. Not for Windows');
}
diff --git a/ext/standard/tests/file/umask_variation3.phpt b/ext/standard/tests/file/umask_variation3.phpt
index c666c328df..7885d0e5b8 100644
--- a/ext/standard/tests/file/umask_variation3.phpt
+++ b/ext/standard/tests/file/umask_variation3.phpt
@@ -4,6 +4,7 @@ Test umask() function : usage variation
Dave Kelsey <d_kelsey@uk.ibm.com>
--SKIPIF--
<?php
+if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. only for Non Windows');
}
diff --git a/ext/standard/tests/general_functions/getrusage_variation1.phpt b/ext/standard/tests/general_functions/getrusage_variation1.phpt
index 3daf9e5e61..ae2b150548 100644
--- a/ext/standard/tests/general_functions/getrusage_variation1.phpt
+++ b/ext/standard/tests/general_functions/getrusage_variation1.phpt
@@ -2,6 +2,7 @@
Test getrusage() function : usage variation - diff data types as $who arg
--SKIPIF--
<?php
+if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
if( substr(PHP_OS, 0, 3) == "WIN" )
die("skip.. Do not run on Windows");
?>
diff --git a/ext/standard/tests/general_functions/intval_variation2.phpt b/ext/standard/tests/general_functions/intval_variation2.phpt
index 65bc584254..8fdab26caa 100644
--- a/ext/standard/tests/general_functions/intval_variation2.phpt
+++ b/ext/standard/tests/general_functions/intval_variation2.phpt
@@ -1,5 +1,7 @@
--TEST--
Test intval() function : usage variation
+--SKIPIF--
+<?php if (PHP_INT_SIZE !== 4) die("skip this test is for 32-bit only");
--FILE--
<?php
/* Prototype : int intval(mixed var [, int base])
@@ -113,10 +115,12 @@ int(1)
int(1)
--float 12.3456789000e10--
-int(1)
+Error: 2 - intval() expects parameter 2 to be long, double given, %s(%d)
+NULL
--float -12.3456789000e10--
-int(1)
+Error: 2 - intval() expects parameter 2 to be long, double given, %s(%d)
+NULL
--float .5--
int(1)
@@ -192,4 +196,4 @@ int(1)
--unset var--
int(1)
-===DONE=== \ No newline at end of file
+===DONE===
diff --git a/ext/standard/tests/image/image_type_to_mime_type_variation1.phpt b/ext/standard/tests/image/image_type_to_mime_type_variation1.phpt
index 0023b7125d..5b941f7556 100644
--- a/ext/standard/tests/image/image_type_to_mime_type_variation1.phpt
+++ b/ext/standard/tests/image/image_type_to_mime_type_variation1.phpt
@@ -1,5 +1,7 @@
--TEST--
Test image_type_to_mime_type() function : usage variations - Pass different data types as imagetype
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : string image_type_to_mime_type(int imagetype)
@@ -149,4 +151,4 @@ string(24) "application/octet-stream"
-- Iteration 20 --
string(24) "application/octet-stream"
-===DONE=== \ No newline at end of file
+===DONE===
diff --git a/ext/standard/tests/math/mt_rand_variation2.phpt b/ext/standard/tests/math/mt_rand_variation2.phpt
index 2174a349e5..817252edd5 100644
--- a/ext/standard/tests/math/mt_rand_variation2.phpt
+++ b/ext/standard/tests/math/mt_rand_variation2.phpt
@@ -1,5 +1,7 @@
--TEST--
Test mt_rand() function : usage variations - different data types as $max argument
+--SKIPIF--
+<?php if (PHP_INT_SIZE !== 4) die("skip this test is for 32-bit only");
--FILE--
<?php
/* Prototype : int mt_rand ([ int $min , int $max ] )
@@ -110,7 +112,9 @@ int(%i)
int(%i)
-- Iteration 8 --
-int(%i)
+
+Warning: mt_rand() expects parameter 2 to be long, double given in %s on line %d
+NULL
-- Iteration 9 --
int(%i)
diff --git a/ext/standard/tests/math/mt_srand_variation1.phpt b/ext/standard/tests/math/mt_srand_variation1.phpt
index feb0b37972..0344f78252 100644
--- a/ext/standard/tests/math/mt_srand_variation1.phpt
+++ b/ext/standard/tests/math/mt_srand_variation1.phpt
@@ -1,5 +1,7 @@
--TEST--
Test mt_srand() function : usage variations - different data types as $seed argument
+--SKIPIF--
+<?php if (PHP_INT_SIZE !== 4) die("skip this test is for 32-bit only");
--FILE--
<?php
/* Prototype : void mt_srand ([ int $seed ] )
@@ -110,6 +112,8 @@ NULL
NULL
-- Iteration 8 --
+
+Warning: mt_srand() expects parameter 1 to be long, double given in %s on line %d
NULL
-- Iteration 9 --
diff --git a/ext/standard/tests/math/rand_variation1.phpt b/ext/standard/tests/math/rand_variation1.phpt
index 02e552b784..b9e7c81621 100644
--- a/ext/standard/tests/math/rand_variation1.phpt
+++ b/ext/standard/tests/math/rand_variation1.phpt
@@ -1,5 +1,7 @@
--TEST--
Test rand() function : usage variations - different data types as $min argument
+--SKIPIF--
+<?php if (PHP_INT_SIZE !== 4) die("skip this test is for 32-bit only");
--FILE--
<?php
/* Prototype : int rand ([ int $min , int $max ] )
@@ -110,7 +112,9 @@ int(%i)
int(%i)
-- Iteration 8 --
-int(%i)
+
+Warning: rand() expects parameter 1 to be long, double given in %s on line %d
+NULL
-- Iteration 9 --
int(%i)
diff --git a/ext/standard/tests/math/rand_variation2.phpt b/ext/standard/tests/math/rand_variation2.phpt
index c0e1fc6373..5ebd274aa6 100644
--- a/ext/standard/tests/math/rand_variation2.phpt
+++ b/ext/standard/tests/math/rand_variation2.phpt
@@ -1,5 +1,7 @@
--TEST--
Test rand() function : usage variations - different data types as $max argument
+--SKIPIF--
+<?php if (PHP_INT_SIZE !== 4) die("skip this test is for 32-bit only");
--FILE--
<?php
/* Prototype : int rand ([ int $min , int $max ] )
@@ -110,7 +112,9 @@ int(%i)
int(%i)
-- Iteration 8 --
-int(%i)
+
+Warning: rand() expects parameter 2 to be long, double given in %s on line %d
+NULL
-- Iteration 9 --
int(%i)
diff --git a/ext/standard/tests/math/srand_variation1.phpt b/ext/standard/tests/math/srand_variation1.phpt
index 16da80fd6a..cdd98850ae 100644
--- a/ext/standard/tests/math/srand_variation1.phpt
+++ b/ext/standard/tests/math/srand_variation1.phpt
@@ -1,5 +1,7 @@
--TEST--
Test srand() function : usage variations - different data types as $seed argument
+--SKIPIF--
+<?php if (PHP_INT_SIZE !== 4) die("skip this test is for 32-bit only");
--FILE--
<?php
/* Prototype : void srand ([ int $seed ] )
@@ -110,6 +112,8 @@ NULL
NULL
-- Iteration 8 --
+
+Warning: srand() expects parameter 1 to be long, double given in %s on line %d
NULL
-- Iteration 9 --
diff --git a/ext/standard/tests/strings/bug54322.phpt b/ext/standard/tests/strings/bug54322.phpt
index aead172b82..4834bdf236 100644
--- a/ext/standard/tests/strings/bug54322.phpt
+++ b/ext/standard/tests/strings/bug54322.phpt
@@ -5,5 +5,6 @@ Bug #54322: Null pointer deref in get_html_translation_table due to information
var_dump(
get_html_translation_table(NAN, 0, "UTF-8") > 0
);
---EXPECT--
-bool(true)
+--EXPECTF--
+Warning: get_html_translation_table() expects parameter 1 to be long, double given in %s on line %d
+bool(false)
diff --git a/ext/standard/tests/strings/chunk_split_variation2.phpt b/ext/standard/tests/strings/chunk_split_variation2.phpt
index d49ec3b1bd..1503d520f4 100644
--- a/ext/standard/tests/strings/chunk_split_variation2.phpt
+++ b/ext/standard/tests/strings/chunk_split_variation2.phpt
@@ -1,5 +1,7 @@
--TEST--
Test chunk_split() function : usage variations - unexpected values for 'chunklen' argument(Bug#42796)
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : string chunk_split(string $str [, int $chunklen [, string $ending]])
@@ -98,8 +100,8 @@ Warning: chunk_split(): Chunk length should be greater than zero in %schunk_spli
bool(false)
-- Iteration 3 --
-Warning: chunk_split(): Chunk length should be greater than zero in %schunk_split_variation2.php on line %d
-bool(false)
+Warning: chunk_split() expects parameter 2 to be long, double given in %s on line %d
+NULL
-- Iteration 4 --
Warning: chunk_split(): Chunk length should be greater than zero in %schunk_split_variation2.php on line %d
diff --git a/ext/standard/tests/strings/chunk_split_variation5.phpt b/ext/standard/tests/strings/chunk_split_variation5.phpt
index 580f8f0a6f..ca34959354 100644
--- a/ext/standard/tests/strings/chunk_split_variation5.phpt
+++ b/ext/standard/tests/strings/chunk_split_variation5.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/chunk_split_variation8.phpt b/ext/standard/tests/strings/chunk_split_variation8.phpt
index cfb440e923..7f1e4959d4 100644
--- a/ext/standard/tests/strings/chunk_split_variation8.phpt
+++ b/ext/standard/tests/strings/chunk_split_variation8.phpt
@@ -83,8 +83,8 @@ It has _speci@l ch@r$ 2222 !!!Now \k as escape char to test
chunk_split():::"
-- Iteration 7 --
-Warning: chunk_split(): Chunk length should be greater than zero in %s on line %d
-bool(false)
+Warning: chunk_split() expects parameter 2 to be long, double given in %s on line %d
+NULL
-- Iteration 8 --
Warning: chunk_split(): Chunk length should be greater than zero in %s on line %d
diff --git a/ext/standard/tests/strings/count_chars_variation2.phpt b/ext/standard/tests/strings/count_chars_variation2.phpt
index 7a17cb9c61..fe9597e3ae 100644
--- a/ext/standard/tests/strings/count_chars_variation2.phpt
+++ b/ext/standard/tests/strings/count_chars_variation2.phpt
@@ -1,5 +1,7 @@
--TEST--
Test count_chars() function : usage variations - test values for $mode argument
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
diff --git a/ext/standard/tests/strings/explode.phpt b/ext/standard/tests/strings/explode.phpt
index 1047fb7856..4c7a3fe45a 100644
--- a/ext/standard/tests/strings/explode.phpt
+++ b/ext/standard/tests/strings/explode.phpt
@@ -2,6 +2,8 @@
explode() function
--INI--
error_reporting=2047
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* From http://bugs.php.net/19865 */
diff --git a/ext/standard/tests/strings/htmlspecialchars_decode_variation2.phpt b/ext/standard/tests/strings/htmlspecialchars_decode_variation2.phpt
index 0e26d094a8..8fc4068b9a 100644
--- a/ext/standard/tests/strings/htmlspecialchars_decode_variation2.phpt
+++ b/ext/standard/tests/strings/htmlspecialchars_decode_variation2.phpt
@@ -102,7 +102,9 @@ string(104) "<html>Roy&#039;s height > Sam&#039;s height. 13 < 15. 1111 & 0000 =
string(104) "<html>Roy&#039;s height > Sam&#039;s height. 13 < 15. 1111 & 0000 = 0000. " double quote string "</html>"
-- Iteration 3 --
-string(114) "<html>Roy&#039;s height > Sam&#039;s height. 13 < 15. 1111 & 0000 = 0000. &quot; double quote string &quot;</html>"
+
+Warning: htmlspecialchars_decode() expects parameter 2 to be long, double given in %s on line %d
+NULL
-- Iteration 4 --
string(114) "<html>Roy&#039;s height > Sam&#039;s height. 13 < 15. 1111 & 0000 = 0000. &quot; double quote string &quot;</html>"
diff --git a/ext/standard/tests/strings/str_pad_variation4.phpt b/ext/standard/tests/strings/str_pad_variation4.phpt
index a622304c82..d2b51af0a3 100644
--- a/ext/standard/tests/strings/str_pad_variation4.phpt
+++ b/ext/standard/tests/strings/str_pad_variation4.phpt
@@ -1,5 +1,7 @@
--TEST--
Test str_pad() function : usage variations - unexpected inputs for '$pad_type' argument
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : string str_pad ( string $input , int $pad_length [, string $pad_string [, int $pad_type ]] )
diff --git a/ext/standard/tests/strings/str_split_variation2.phpt b/ext/standard/tests/strings/str_split_variation2.phpt
index ba1297b405..423d9d894c 100644
--- a/ext/standard/tests/strings/str_split_variation2.phpt
+++ b/ext/standard/tests/strings/str_split_variation2.phpt
@@ -111,8 +111,8 @@ Warning: str_split(): The length of each segment must be greater than zero in %s
bool(false)
--Iteration 3 --
-Warning: str_split(): The length of each segment must be greater than zero in %sstr_split_variation2.php on line %d
-bool(false)
+Warning: str_split() expects parameter 2 to be long, double given in %s on line %d
+NULL
--Iteration 4 --
Warning: str_split(): The length of each segment must be greater than zero in %sstr_split_variation2.php on line %d
diff --git a/ext/standard/tests/strings/str_split_variation6.phpt b/ext/standard/tests/strings/str_split_variation6.phpt
index 6d751bbccf..049d1fe401 100644
--- a/ext/standard/tests/strings/str_split_variation6.phpt
+++ b/ext/standard/tests/strings/str_split_variation6.phpt
@@ -157,8 +157,8 @@ array(1) {
}
-- Iteration 7 --
-Warning: str_split(): The length of each segment must be greater than zero in %s on line %d
-bool(false)
+Warning: str_split() expects parameter 2 to be long, double given in %s line %d
+NULL
-- Iteration 8 --
Warning: str_split(): The length of each segment must be greater than zero in %s on line %d
diff --git a/ext/standard/tests/strings/str_split_variation7.phpt b/ext/standard/tests/strings/str_split_variation7.phpt
index 455c5b8972..ee0e88c51a 100644
--- a/ext/standard/tests/strings/str_split_variation7.phpt
+++ b/ext/standard/tests/strings/str_split_variation7.phpt
@@ -135,8 +135,8 @@ array(1) {
}
-- Iteration 7 --
-Warning: str_split(): The length of each segment must be greater than zero in %s on line %d
-bool(false)
+Warning: str_split() expects parameter 2 to be long, double given in %s on line %d
+NULL
-- Iteration 8 --
Warning: str_split(): The length of each segment must be greater than zero in %s on line %d
diff --git a/ext/standard/tests/strings/strcspn_variation4.phpt b/ext/standard/tests/strings/strcspn_variation4.phpt
index d456a23318..04d9bceae1 100644
--- a/ext/standard/tests/strings/strcspn_variation4.phpt
+++ b/ext/standard/tests/strings/strcspn_variation4.phpt
@@ -1,5 +1,7 @@
--TEST--
Test strcspn() function : usage variations - unexpected values of len argument
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : proto int strcspn(string str, string mask [, int start [, int len]])
@@ -193,4 +195,4 @@ int(0)
Warning: strcspn() expects parameter 4 to be long, resource given in %s on line %d
NULL
-Done \ No newline at end of file
+Done
diff --git a/ext/standard/tests/strings/stripos_variation14.phpt b/ext/standard/tests/strings/stripos_variation14.phpt
index 023585dbb7..a6407425dd 100644
--- a/ext/standard/tests/strings/stripos_variation14.phpt
+++ b/ext/standard/tests/strings/stripos_variation14.phpt
@@ -1,5 +1,7 @@
--TEST--
Test stripos() function : usage variations - unexpected inputs for 'offset' argument
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] );
diff --git a/ext/standard/tests/strings/stripos_variation15.phpt b/ext/standard/tests/strings/stripos_variation15.phpt
index 2304c1d350..fd01cf8bd0 100644
--- a/ext/standard/tests/strings/stripos_variation15.phpt
+++ b/ext/standard/tests/strings/stripos_variation15.phpt
@@ -1,5 +1,7 @@
--TEST--
Test stripos() function : usage variations - unexpected inputs for 'haystack', 'needle' & 'offset' arguments
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] );
diff --git a/ext/standard/tests/strings/strncasecmp_variation5.phpt b/ext/standard/tests/strings/strncasecmp_variation5.phpt
index c391ba3e92..dc17b20043 100644
--- a/ext/standard/tests/strings/strncasecmp_variation5.phpt
+++ b/ext/standard/tests/strings/strncasecmp_variation5.phpt
@@ -1,5 +1,7 @@
--TEST--
Test strncasecmp() function : usage variations - unexpected values for 'len'
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : int strncasecmp ( string $str1, string $str2, int $len );
diff --git a/ext/standard/tests/strings/strncmp_variation5.phpt b/ext/standard/tests/strings/strncmp_variation5.phpt
index 73d7e8f319..36648c8b60 100644
--- a/ext/standard/tests/strings/strncmp_variation5.phpt
+++ b/ext/standard/tests/strings/strncmp_variation5.phpt
@@ -1,5 +1,7 @@
--TEST--
Test strncmp() function : usage variations - different lengths(all types)
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : int strncmp ( string $str1, string $str2, int $len );
diff --git a/ext/standard/tests/strings/strripos_offset.phpt b/ext/standard/tests/strings/strripos_offset.phpt
index 524699ad52..f6124c022d 100644
--- a/ext/standard/tests/strings/strripos_offset.phpt
+++ b/ext/standard/tests/strings/strripos_offset.phpt
@@ -1,5 +1,7 @@
--TEST--
strripos() offset integer overflow
+--SKIPIF--
+<?php if (PHP_INT_SIZE !== 4) die("skip this test is for 32-bit only");
--FILE--
<?php
@@ -16,16 +18,16 @@ var_dump(strripos(1024, "te", -PHP_INT_MAX-1));
echo "Done\n";
?>
--EXPECTF--
-Warning: strripos(): Offset is greater than the length of haystack string in %s on line %d
+Warning: strripos() expects parameter 3 to be long, double given in %s on line %d
bool(false)
-Warning: strripos(): Offset is greater than the length of haystack string in %s on line %d
+Warning: strripos() expects parameter 3 to be long, double given in %s on line %d
bool(false)
-Warning: strripos(): Offset is greater than the length of haystack string in %s on line %d
+Warning: strripos() expects parameter 3 to be long, double given in %s on line %d
bool(false)
-Warning: strripos(): Offset is greater than the length of haystack string in %s on line %d
+Warning: strripos() expects parameter 3 to be long, double given in %s on line %d
bool(false)
Warning: strripos() expects parameter 1 to be string, array given in %s on line %d
diff --git a/ext/standard/tests/strings/strrpos_offset.phpt b/ext/standard/tests/strings/strrpos_offset.phpt
index 18b5847063..41540f1b46 100644
--- a/ext/standard/tests/strings/strrpos_offset.phpt
+++ b/ext/standard/tests/strings/strrpos_offset.phpt
@@ -1,5 +1,7 @@
--TEST--
strrpos() offset integer overflow
+--SKIPIF--
+<?php if (PHP_INT_SIZE !== 4) die("skip this test is for 32-bit only");
--FILE--
<?php
@@ -15,16 +17,16 @@ var_dump(strrpos(1024, "te", -PHP_INT_MAX-1));
echo "Done\n";
?>
--EXPECTF--
-Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d
+Warning: strrpos() expects parameter 3 to be long, double given in %s on line %d
bool(false)
-Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d
+Warning: strrpos() expects parameter 3 to be long, double given in %s on line %d
bool(false)
-Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d
+Warning: strrpos() expects parameter 3 to be long, double given in %s on line %d
bool(false)
-Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d
+Warning: strrpos() expects parameter 3 to be long, double given in %s on line %d
bool(false)
Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d
diff --git a/ext/standard/tests/strings/strrpos_variation14.phpt b/ext/standard/tests/strings/strrpos_variation14.phpt
index 53c123a3fd..9b5d2154e8 100644
--- a/ext/standard/tests/strings/strrpos_variation14.phpt
+++ b/ext/standard/tests/strings/strrpos_variation14.phpt
@@ -1,5 +1,7 @@
--TEST--
Test strrpos() function : usage variations - unexpected inputs for 'offset' argument
+--SKIPIF--
+<?php if (PHP_INT_SIZE !== 4) die("skip this test is for 32-bit only");
--FILE--
<?php
/* Prototype : int strrpos ( string $haystack, string $needle [, int $offset] );
@@ -92,7 +94,7 @@ int(6)
int(6)
-- Iteration 3 --
-Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d
+Warning: strrpos() expects parameter 3 to be long, double given in %s on line %d
bool(false)
-- Iteration 4 --
int(6)
diff --git a/ext/standard/tests/strings/strrpos_variation15.phpt b/ext/standard/tests/strings/strrpos_variation15.phpt
index d958cdc485..412454913c 100644
--- a/ext/standard/tests/strings/strrpos_variation15.phpt
+++ b/ext/standard/tests/strings/strrpos_variation15.phpt
@@ -1,5 +1,7 @@
--TEST--
Test strrpos() function : usage variations - unexpected inputs for 'haystack', 'needle' & 'offset' arguments
+--SKIPIF--
+<?php if (PHP_INT_SIZE !== 4) die("skip this test is for 32-bit only");
--FILE--
<?php
/* Prototype : int strrpos ( string $haystack, string $needle [, int $offset] );
@@ -110,7 +112,7 @@ Warning: strrpos(): Offset is greater than the length of haystack string in %s o
bool(false)
-- Iteration 7 --
-Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d
+Warning: strrpos() expects parameter 3 to be long, double given in %s on line %d
bool(false)
-- Iteration 8 --
bool(false)
diff --git a/ext/standard/tests/url/parse_url_variation_002_32bit.phpt b/ext/standard/tests/url/parse_url_variation_002_32bit.phpt
index aefb37a117..a0b8615b75 100644
--- a/ext/standard/tests/url/parse_url_variation_002_32bit.phpt
+++ b/ext/standard/tests/url/parse_url_variation_002_32bit.phpt
@@ -80,11 +80,11 @@ echo "Done";
?>
--EXPECTF--
*** Testing parse_url() : usage variations ***
-Error: 8 - Undefined variable: undefined_var, %s(61)
-Error: 8 - Undefined variable: unset_var, %s(64)
+Error: 8 - Undefined variable: undefined_var, %s(%d)
+Error: 8 - Undefined variable: unset_var, %s(%d)
Arg value 10.5
-Error: 2 - parse_url(): Invalid URL component identifier 10, %s(71)
+Error: 2 - parse_url(): Invalid URL component identifier 10, %s(%d)
bool(false)
Arg value -10.5
@@ -108,54 +108,38 @@ array(8) {
}
Arg value 101234567000
-array(8) {
- ["scheme"]=>
- string(4) "http"
- ["host"]=>
- string(11) "www.php.net"
- ["port"]=>
- int(80)
- ["user"]=>
- string(6) "secret"
- ["pass"]=>
- string(7) "hideout"
- ["path"]=>
- string(10) "/index.php"
- ["query"]=>
- string(31) "test=1&test2=char&test3=mixesCI"
- ["fragment"]=>
- string(16) "some_page_ref123"
-}
+Error: 2 - parse_url() expects parameter 2 to be long, double given, %s(%d)
+NULL
Arg value 1.07654321E-9
string(4) "http"
Arg value 0.5
string(4) "http"
-Error: 8 - Array to string conversion, %sparse_url_variation_002_32bit.php(%d)
+Error: 8 - Array to string conversion, %s(%d)
Arg value Array
-Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(71)
+Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(%d)
NULL
-Error: 8 - Array to string conversion, %sparse_url_variation_002_32bit.php(%d)
+Error: 8 - Array to string conversion, %s(%d)
Arg value Array
-Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(71)
+Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(%d)
NULL
-Error: 8 - Array to string conversion, %sparse_url_variation_002_32bit.php(%d)
+Error: 8 - Array to string conversion, %s(%d)
Arg value Array
-Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(71)
+Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(%d)
NULL
-Error: 8 - Array to string conversion, %sparse_url_variation_002_32bit.php(%d)
+Error: 8 - Array to string conversion, %s(%d)
Arg value Array
-Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(71)
+Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(%d)
NULL
-Error: 8 - Array to string conversion, %sparse_url_variation_002_32bit.php(%d)
+Error: 8 - Array to string conversion, %s(%d)
Arg value Array
-Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(71)
+Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(%d)
NULL
Arg value
@@ -165,36 +149,36 @@ Arg value
string(4) "http"
Arg value 1
-string(11) "www.php.net"
+string(%d) "www.php.net"
Arg value
string(4) "http"
Arg value 1
-string(11) "www.php.net"
+string(%d) "www.php.net"
Arg value
string(4) "http"
Arg value
-Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(71)
+Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(%d)
NULL
Arg value
-Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(71)
+Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(%d)
NULL
Arg value string
-Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(71)
+Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(%d)
NULL
Arg value string
-Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(71)
+Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(%d)
NULL
-Error: 4096 - Object of class stdClass could not be converted to string, %s(70)
+Error: 4096 - Object of class stdClass could not be converted to string, %s(%d)
Arg value
-Error: 2 - parse_url() expects parameter 2 to be long, object given, %s(71)
+Error: 2 - parse_url() expects parameter 2 to be long, object given, %s(%d)
NULL
Arg value
diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c
index 5d334069a1..b809fff6e0 100644
--- a/ext/tidy/tidy.c
+++ b/ext/tidy/tidy.c
@@ -1040,7 +1040,7 @@ static PHP_MINIT_FUNCTION(tidy)
REGISTER_INI_ENTRIES();
REGISTER_TIDY_CLASS(tidy, doc, NULL, 0);
- REGISTER_TIDY_CLASS(tidyNode, node, NULL, ZEND_ACC_FINAL_CLASS);
+ REGISTER_TIDY_CLASS(tidyNode, node, NULL, ZEND_ACC_FINAL);
tidy_object_handlers_doc.cast_object = tidy_doc_cast_handler;
tidy_object_handlers_node.cast_object = tidy_node_cast_handler;
diff --git a/ext/tokenizer/tests/001.phpt b/ext/tokenizer/tests/001.phpt
index 203e3c7ddb..195e4afbd4 100644
--- a/ext/tokenizer/tests/001.phpt
+++ b/ext/tokenizer/tests/001.phpt
@@ -1,7 +1,8 @@
--TEST--
token_name()
--SKIPIF--
-<?php if (!extension_loaded("tokenizer")) print "skip"; ?>
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
+if (!extension_loaded("tokenizer")) print "skip"; ?>
--FILE--
<?php
diff --git a/ext/xml/tests/xml_error_string_variation1.phpt b/ext/xml/tests/xml_error_string_variation1.phpt
index 40b542c141..5e6010db0b 100644
--- a/ext/xml/tests/xml_error_string_variation1.phpt
+++ b/ext/xml/tests/xml_error_string_variation1.phpt
@@ -1,7 +1,7 @@
--TEST--
Test xml_error_string() function : usage variations - test different types for code
--SKIPIF--
-<?php
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
if (!extension_loaded("xml")) {
print "skip - XML extension not loaded";
}
diff --git a/ext/xml/tests/xml_parser_get_option_variation2.phpt b/ext/xml/tests/xml_parser_get_option_variation2.phpt
index 2341c413f1..3260e58b63 100644
--- a/ext/xml/tests/xml_parser_get_option_variation2.phpt
+++ b/ext/xml/tests/xml_parser_get_option_variation2.phpt
@@ -1,7 +1,7 @@
--TEST--
Test xml_parser_get_option() function : usage variations
--SKIPIF--
-<?php
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
if (!extension_loaded("xml")) {
print "skip - XML extension not loaded";
}
diff --git a/ext/xml/tests/xml_parser_set_option_variation2.phpt b/ext/xml/tests/xml_parser_set_option_variation2.phpt
index 9900d6fe6a..7b23b49fcf 100644
--- a/ext/xml/tests/xml_parser_set_option_variation2.phpt
+++ b/ext/xml/tests/xml_parser_set_option_variation2.phpt
@@ -2,6 +2,7 @@
Test xml_parser_set_option() function : usage variations
--SKIPIF--
<?php
+if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
if (!extension_loaded("xml")) {
print "skip - XML extension not loaded";
}
diff --git a/main/streams/memory.c b/main/streams/memory.c
index 6b1b2312a9..28274d7fcd 100644
--- a/main/streams/memory.c
+++ b/main/streams/memory.c
@@ -87,15 +87,19 @@ static size_t php_stream_memory_read(php_stream *stream, char *buf, size_t count
php_stream_memory_data *ms = (php_stream_memory_data*)stream->abstract;
assert(ms != NULL);
- if (ms->fpos + count >= ms->fsize) {
- count = ms->fsize - ms->fpos;
+ if (ms->fpos == ms->fsize) {
stream->eof = 1;
- }
- if (count) {
- assert(ms->data!= NULL);
- assert(buf!= NULL);
- memcpy(buf, ms->data+ms->fpos, count);
- ms->fpos += count;
+ count = 0;
+ } else {
+ if (ms->fpos + count >= ms->fsize) {
+ count = ms->fsize - ms->fpos;
+ }
+ if (count) {
+ assert(ms->data!= NULL);
+ assert(buf!= NULL);
+ memcpy(buf, ms->data+ms->fpos, count);
+ ms->fpos += count;
+ }
}
return count;
}
diff --git a/tests/output/ob_implicit_flush_variation_001.phpt b/tests/output/ob_implicit_flush_variation_001.phpt
index ef5a9efb75..73d5820691 100644
--- a/tests/output/ob_implicit_flush_variation_001.phpt
+++ b/tests/output/ob_implicit_flush_variation_001.phpt
@@ -1,5 +1,7 @@
--TEST--
Test ob_implicit_flush() function : usage variation
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
--FILE--
<?php
/* Prototype : void ob_implicit_flush([int flag])
@@ -189,4 +191,4 @@ NULL
NULL
--unset var--
-NULL \ No newline at end of file
+NULL