]> granicus.if.org Git - php/commitdiff
Add additional operator exception handling tests
authorNikita Popov <nikita.ppv@gmail.com>
Tue, 31 Mar 2020 16:35:17 +0000 (18:35 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 31 Mar 2020 16:36:42 +0000 (18:36 +0200)
These show that we may lose the old value of the LHS of a compound
assignment operator in some cases.

Zend/tests/compound_assign_failure.phpt

index 673baecff071ed7d45bac28656e31bc9199dbe62..b4563e341f034a334e167c9872ad55e90401637a 100644 (file)
@@ -42,6 +42,11 @@ try { $x += new stdClass; }
 catch (Exception $e) {}
 var_dump($x);
 
+$x = "foo";
+try { $x += new stdClass; }
+catch (Exception $e) {}
+var_dump($x);
+
 $x = new stdClass;
 try { $x -= 1; }
 catch (Exception $e) {}
@@ -52,6 +57,11 @@ try { $x -= new stdClass; }
 catch (Exception $e) {}
 var_dump($x);
 
+$x = "foo";
+try { $x -= new stdClass; }
+catch (Exception $e) {}
+var_dump($x);
+
 $x = new stdClass;
 try { $x *= 1; }
 catch (Exception $e) {}
@@ -62,6 +72,11 @@ try { $x *= new stdClass; }
 catch (Exception $e) {}
 var_dump($x);
 
+$x = "foo";
+try { $x *= new stdClass; }
+catch (Exception $e) {}
+var_dump($x);
+
 $x = new stdClass;
 try { $x /= 1; }
 catch (Exception $e) {}
@@ -72,6 +87,11 @@ try { $x /= new stdClass; }
 catch (Exception $e) {}
 var_dump($x);
 
+$x = "foo";
+try { $x /= new stdClass; }
+catch (Exception $e) {}
+var_dump($x);
+
 $x = new stdClass;
 try { $x %= 1; }
 catch (Exception $e) {}
@@ -82,6 +102,11 @@ try { $x %= new stdClass; }
 catch (Exception $e) {}
 var_dump($x);
 
+$x = "foo";
+try { $x %= new stdClass; }
+catch (Exception $e) {}
+var_dump($x);
+
 $x = new stdClass;
 try { $x **= 1; }
 catch (Exception $e) {}
@@ -92,6 +117,11 @@ try { $x **= new stdClass; }
 catch (Exception $e) {}
 var_dump($x);
 
+$x = "foo";
+try { $x **= new stdClass; }
+catch (Exception $e) {}
+var_dump($x);
+
 $x = new stdClass;
 try { $x ^= 1; }
 catch (Exception $e) {}
@@ -102,6 +132,11 @@ try { $x ^= new stdClass; }
 catch (Exception $e) {}
 var_dump($x);
 
+$x = "foo";
+try { $x ^= new stdClass; }
+catch (Exception $e) {}
+var_dump($x);
+
 $x = new stdClass;
 try { $x &= 1; }
 catch (Exception $e) {}
@@ -112,6 +147,11 @@ try { $x &= new stdClass; }
 catch (Exception $e) {}
 var_dump($x);
 
+$x = "foo";
+try { $x &= new stdClass; }
+catch (Exception $e) {}
+var_dump($x);
+
 $x = new stdClass;
 try { $x |= 1; }
 catch (Exception $e) {}
@@ -122,6 +162,11 @@ try { $x |= new stdClass; }
 catch (Exception $e) {}
 var_dump($x);
 
+$x = "foo";
+try { $x |= new stdClass; }
+catch (Exception $e) {}
+var_dump($x);
+
 $x = new stdClass;
 try { $x <<= 1; }
 catch (Exception $e) {}
@@ -132,6 +177,11 @@ try { $x <<= new stdClass; }
 catch (Exception $e) {}
 var_dump($x);
 
+$x = "foo";
+try { $x <<= new stdClass; }
+catch (Exception $e) {}
+var_dump($x);
+
 $x = new stdClass;
 try { $x >>= 1; }
 catch (Exception $e) {}
@@ -141,6 +191,12 @@ $x = 1;
 try { $x >>= new stdClass; }
 catch (Exception $e) {}
 var_dump($x);
+
+$x = "foo";
+try { $x >>= new stdClass; }
+catch (Exception $e) {}
+var_dump($x);
+
 ?>
 --EXPECTF--
 int(1)
@@ -152,33 +208,44 @@ string(3) "foo"
 object(stdClass)#%d (0) {
 }
 int(1)
+int(0)
 object(stdClass)#%d (0) {
 }
 int(1)
+int(0)
 object(stdClass)#%d (0) {
 }
 int(1)
+int(0)
 object(stdClass)#%d (0) {
 }
 int(1)
+int(0)
 object(stdClass)#%d (0) {
 }
 int(1)
+string(3) "foo"
 object(stdClass)#%d (0) {
 }
 int(1)
+int(0)
 object(stdClass)#%d (0) {
 }
 int(1)
+string(3) "foo"
 object(stdClass)#%d (0) {
 }
 int(1)
+string(3) "foo"
 object(stdClass)#%d (0) {
 }
 int(1)
+string(3) "foo"
 object(stdClass)#%d (0) {
 }
 int(1)
+string(3) "foo"
 object(stdClass)#%d (0) {
 }
 int(1)
+string(3) "foo"