summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/tests/bug68118.phpt21
-rw-r--r--Zend/tests/gc_029_zts.phpt2
-rw-r--r--Zend/tests/gc_033.phpt2
-rw-r--r--Zend/zend_object_handlers.c10
-rw-r--r--Zend/zend_vm_def.h3
-rw-r--r--Zend/zend_vm_execute.h12
-rw-r--r--ext/curl/interface.c6
-rw-r--r--ext/curl/tests/check_win_config.phpt2
-rw-r--r--ext/date/tests/bug67118.phpt3
-rw-r--r--ext/date/tests/bug67118_2.phpt11
-rw-r--r--ext/standard/math.c2
-rw-r--r--sapi/litespeed/lsapi_main.c3
-rw-r--r--tests/lang/foreachLoop.013.phpt2
-rw-r--r--tests/lang/foreachLoop.014.phpt4
-rw-r--r--tests/lang/foreachLoop.015.phpt2
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