summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/json/tests/bug68992.phpt30
1 files changed, 30 insertions, 0 deletions
diff --git a/ext/json/tests/bug68992.phpt b/ext/json/tests/bug68992.phpt
new file mode 100644
index 0000000000..0fc41eca49
--- /dev/null
+++ b/ext/json/tests/bug68992.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Bug #68992 (json_encode stacks exceptions thrown by JsonSerializable classes)
+--SKIPIF--
+<?php
+if (!extension_loaded('json')) die('skip');
+?>
+--FILE--
+<?php
+
+class MyClass implements JsonSerializable {
+ public function jsonSerialize() {
+ throw new Exception('Not implemented!');
+ }
+}
+$classes = [];
+for($i = 0; $i < 5; $i++) {
+ $classes[] = new MyClass();
+}
+
+try {
+ json_encode($classes);
+} catch(Exception $e) {
+ do {
+ printf("%s (%d) [%s]\n", $e->getMessage(), $e->getCode(), get_class($e));
+ } while ($e = $e->getPrevious());
+}
+?>
+--EXPECT--
+Failed calling MyClass::jsonSerialize() (0) [Exception]
+Not implemented! (0) [Exception]