diff options
-rw-r--r-- | Zend/tests/bug68118.phpt | 21 | ||||
-rw-r--r-- | Zend/tests/gc_029_zts.phpt | 2 | ||||
-rw-r--r-- | Zend/tests/gc_033.phpt | 2 | ||||
-rw-r--r-- | Zend/zend_object_handlers.c | 10 | ||||
-rw-r--r-- | Zend/zend_vm_def.h | 3 | ||||
-rw-r--r-- | Zend/zend_vm_execute.h | 12 | ||||
-rw-r--r-- | ext/curl/interface.c | 6 | ||||
-rw-r--r-- | ext/curl/tests/check_win_config.phpt | 2 | ||||
-rw-r--r-- | ext/date/tests/bug67118.phpt | 3 | ||||
-rw-r--r-- | ext/date/tests/bug67118_2.phpt | 11 | ||||
-rw-r--r-- | ext/standard/math.c | 2 | ||||
-rw-r--r-- | sapi/litespeed/lsapi_main.c | 3 | ||||
-rw-r--r-- | tests/lang/foreachLoop.013.phpt | 2 | ||||
-rw-r--r-- | tests/lang/foreachLoop.014.phpt | 4 | ||||
-rw-r--r-- | tests/lang/foreachLoop.015.phpt | 2 |
15 files changed, 64 insertions, 21 deletions
diff --git a/Zend/tests/bug68118.phpt b/Zend/tests/bug68118.phpt new file mode 100644 index 0000000000..c56e70a112 --- /dev/null +++ b/Zend/tests/bug68118.phpt @@ -0,0 +1,21 @@ +--TEST-- +Bug #68118: $a->foo .= 'test'; can leave $a->foo undefined +--FILE-- +<?php + +set_error_handler(function() { + $obj = new stdClass; + $obj->test = 'meow'; + return true; +}); + +$a = new stdClass; +$a->undefined .= 'test'; +var_dump($a); + +?> +--EXPECT-- +object(stdClass)#2 (1) { + ["undefined"]=> + string(4) "test" +} diff --git a/Zend/tests/gc_029_zts.phpt b/Zend/tests/gc_029_zts.phpt index fc77e1f3bd..5d16e83348 100644 --- a/Zend/tests/gc_029_zts.phpt +++ b/Zend/tests/gc_029_zts.phpt @@ -34,4 +34,4 @@ unset($bar); var_dump(gc_collect_cycles()); ?> --EXPECT-- -int(3) +int(6) diff --git a/Zend/tests/gc_033.phpt b/Zend/tests/gc_033.phpt index bcd1541254..dee426a385 100644 --- a/Zend/tests/gc_033.phpt +++ b/Zend/tests/gc_033.phpt @@ -1,5 +1,7 @@ --TEST-- GC 033: Crash in GC while run with phpspec +--XFAIL-- +Full GC root buffer not handled correctly yet --FILE-- <?php $a = new stdClass(); diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index c2377e7512..5ee9847b6c 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -815,10 +815,6 @@ static zval *zend_std_get_property_ptr_ptr(zval *object, zval *member, int type, (guard = zend_get_property_guard(zobj, property_info, member)) == NULL || (property_info && ((*guard) & IN_GET))) { - /* we don't have access controls - will just add it */ - if(UNEXPECTED(type == BP_VAR_RW || type == BP_VAR_R)) { - zend_error(E_NOTICE, "Undefined property: %s::$%s", zobj->ce->name->val, Z_STRVAL_P(member)); - } ZVAL_NULL(&tmp); if (EXPECTED((property_info->flags & ZEND_ACC_STATIC) == 0) && property_info->offset >= 0) { @@ -830,6 +826,12 @@ static zval *zend_std_get_property_ptr_ptr(zval *object, zval *member, int type, } retval = zend_hash_update(zobj->properties, property_info->name, &tmp); } + + /* Notice is thrown after creation of the property, to avoid EG(std_property_info) + * being overwritten in an error handler. */ + if (UNEXPECTED(type == BP_VAR_RW || type == BP_VAR_R)) { + zend_error(E_NOTICE, "Undefined property: %s::$%s", zobj->ce->name->val, Z_STRVAL_P(member)); + } } else { /* we do have getter - fail and let it try again with usual get/set */ retval = NULL; diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index b843f42c41..7fa544b579 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -4037,8 +4037,7 @@ ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMP|VAR|CV, ANY) ZVAL_UNDEF(&tmp_inc_filename); if (Z_TYPE_P(inc_filename) != IS_STRING) { - ZVAL_DUP(&tmp_inc_filename, inc_filename); - convert_to_string(&tmp_inc_filename); + ZVAL_STR(&tmp_inc_filename, zval_get_string(inc_filename)); inc_filename = &tmp_inc_filename; } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 82676436b1..9f7d4c3a1a 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -2908,8 +2908,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HA ZVAL_UNDEF(&tmp_inc_filename); if (Z_TYPE_P(inc_filename) != IS_STRING) { - ZVAL_DUP(&tmp_inc_filename, inc_filename); - convert_to_string(&tmp_inc_filename); + ZVAL_STR(&tmp_inc_filename, zval_get_string(inc_filename)); inc_filename = &tmp_inc_filename; } @@ -9647,8 +9646,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HAND ZVAL_UNDEF(&tmp_inc_filename); if (Z_TYPE_P(inc_filename) != IS_STRING) { - ZVAL_DUP(&tmp_inc_filename, inc_filename); - convert_to_string(&tmp_inc_filename); + ZVAL_STR(&tmp_inc_filename, zval_get_string(inc_filename)); inc_filename = &tmp_inc_filename; } @@ -16236,8 +16234,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER(ZEND_OPCODE_HAND ZVAL_UNDEF(&tmp_inc_filename); if (Z_TYPE_P(inc_filename) != IS_STRING) { - ZVAL_DUP(&tmp_inc_filename, inc_filename); - convert_to_string(&tmp_inc_filename); + ZVAL_STR(&tmp_inc_filename, zval_get_string(inc_filename)); inc_filename = &tmp_inc_filename; } @@ -33518,8 +33515,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL ZVAL_UNDEF(&tmp_inc_filename); if (Z_TYPE_P(inc_filename) != IS_STRING) { - ZVAL_DUP(&tmp_inc_filename, inc_filename); - convert_to_string(&tmp_inc_filename); + ZVAL_STR(&tmp_inc_filename, zval_get_string(inc_filename)); inc_filename = &tmp_inc_filename; } diff --git a/ext/curl/interface.c b/ext/curl/interface.c index 9a20efdb7a..5c4a8800a3 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -557,6 +557,12 @@ PHP_MINFO_FUNCTION(curl) #if LIBCURL_VERSION_NUM >= 0x071504 /* 7.21.4 */ {"TLS-SRP", CURL_VERSION_TLSAUTH_SRP}, #endif +#if LIBCURL_VERSION_NUM >= 0x072100 /* 7.33.0 */ + {"HTTP2", CURL_VERSION_HTTP2}, +#endif +#if LIBCURL_VERSION_NUM >= 0x072600 /* 7.38.0 */ + {"GSSAPI", CURL_VERSION_GSSAPI}, +#endif {NULL, 0} }; diff --git a/ext/curl/tests/check_win_config.phpt b/ext/curl/tests/check_win_config.phpt index d82fe6f41a..3d13638f90 100644 --- a/ext/curl/tests/check_win_config.phpt +++ b/ext/curl/tests/check_win_config.phpt @@ -40,6 +40,8 @@ SPNEGO => Yes SSL => Yes
SSPI => Yes
TLS-SRP => No
+HTTP2 => No
+GSSAPI => No
Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, pop3s, rtsp, scp, sftp, smtp, smtps, telnet, tftp
Host => %s-pc-win32
SSL Version => OpenSSL/%s
diff --git a/ext/date/tests/bug67118.phpt b/ext/date/tests/bug67118.phpt index 19b5914aa3..332142856e 100644 --- a/ext/date/tests/bug67118.phpt +++ b/ext/date/tests/bug67118.phpt @@ -23,4 +23,5 @@ class mydt extends datetime new mydt("Funktionsansvarig rÄdgivning och juridik", "UTC"); ?> --EXPECTF-- -Fatal error: Call to a member function format() on null in %sbug67118.php on line %d +Warning: DateTime::format(): The DateTime object has not been correctly initialized by its constructor in %s on line %d +Bad date diff --git a/ext/date/tests/bug67118_2.phpt b/ext/date/tests/bug67118_2.phpt index 368d4d9401..9b6f545525 100644 --- a/ext/date/tests/bug67118_2.phpt +++ b/ext/date/tests/bug67118_2.phpt @@ -24,5 +24,12 @@ Done --EXPECTF-- First try Second try -NULL -Done
\ No newline at end of file +object(Foo)#1 (3) { + ["date"]=> + string(26) "2007-09-12 15:49:12.000000" + ["timezone_type"]=> + int(3) + ["timezone"]=> + string(3) "UTC" +} +Done diff --git a/ext/standard/math.c b/ext/standard/math.c index 2531f9e1d4..ee06936369 100644 --- a/ext/standard/math.c +++ b/ext/standard/math.c @@ -220,7 +220,7 @@ static double php_asinh(double z) return(asinh(z)); #else # ifdef _WIN64 - if (z > 0) { + if (z >= 0) { return log(z + sqrt(z * z + 1)); } else { diff --git a/sapi/litespeed/lsapi_main.c b/sapi/litespeed/lsapi_main.c index 6793d5c9a4..13439460ae 100644 --- a/sapi/litespeed/lsapi_main.c +++ b/sapi/litespeed/lsapi_main.c @@ -69,7 +69,7 @@ #define SAPI_LSAPI_MAX_HEADER_LENGTH 2048 -static int lsapi_mode = 1; +static int lsapi_mode = 0; static char *php_self = ""; static char *script_filename = ""; static int source_highlight = 0; @@ -1053,6 +1053,7 @@ int main( int argc, char * argv[] ) LSAPI_Init(); LSAPI_Init_Env_Parameters( NULL ); + lsapi_mode = 1; slow_script_msec = LSAPI_Get_Slow_Req_Msecs(); diff --git a/tests/lang/foreachLoop.013.phpt b/tests/lang/foreachLoop.013.phpt index 3dec1194ff..b0c5e8dcf5 100644 --- a/tests/lang/foreachLoop.013.phpt +++ b/tests/lang/foreachLoop.013.phpt @@ -1,5 +1,7 @@ --TEST--
Directly modifying an unreferenced array when foreach'ing over it while using &$value syntax.
+--XFAIL--
+Needs major foreach changes to get sane behavior
--FILE--
<?php
diff --git a/tests/lang/foreachLoop.014.phpt b/tests/lang/foreachLoop.014.phpt index ab3c657715..d32ea635fd 100644 --- a/tests/lang/foreachLoop.014.phpt +++ b/tests/lang/foreachLoop.014.phpt @@ -1,5 +1,7 @@ --TEST--
Directly modifying a REFERENCED array when foreach'ing over it.
+--XFAIL--
+Needs major foreach changes to get sane behavior
--FILE--
<?php
@@ -553,4 +555,4 @@ array(10) { string(3) "v.2"
[9]=>
string(3) "v.3"
-}
\ No newline at end of file +}
diff --git a/tests/lang/foreachLoop.015.phpt b/tests/lang/foreachLoop.015.phpt index dfba159153..5b12a2b0c2 100644 --- a/tests/lang/foreachLoop.015.phpt +++ b/tests/lang/foreachLoop.015.phpt @@ -1,5 +1,7 @@ --TEST--
Directly modifying a REFERENCED array when foreach'ing over it while using &$value syntax.
+--XFAIL--
+Needs major foreach changes to get sane behavior
--FILE--
<?php
|