summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/tests/assert/expect_empty_stmt_bug.phpt11
-rw-r--r--Zend/zend_ast.c4
2 files changed, 15 insertions, 0 deletions
diff --git a/Zend/tests/assert/expect_empty_stmt_bug.phpt b/Zend/tests/assert/expect_empty_stmt_bug.phpt
new file mode 100644
index 0000000000..f5dcff3ba5
--- /dev/null
+++ b/Zend/tests/assert/expect_empty_stmt_bug.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Empty statement in assert() shouldn't segfault
+--FILE--
+<?php
+
+assert((function () { return true;; })());
+echo "ok";
+
+?>
+--EXPECT--
+ok
diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c
index 714a1443b0..d36ce0b2ad 100644
--- a/Zend/zend_ast.c
+++ b/Zend/zend_ast.c
@@ -783,6 +783,10 @@ static void zend_ast_export_var_list(smart_str *str, zend_ast_list *list, int in
static void zend_ast_export_stmt(smart_str *str, zend_ast *ast, int indent)
{
+ if (!ast) {
+ return;
+ }
+
if (ast->kind == ZEND_AST_STMT_LIST ||
ast->kind == ZEND_AST_TRAIT_ADAPTATIONS) {
zend_ast_list *list = (zend_ast_list*)ast;