if (zend_eval_string(myeval, &retval, compiled_string_description TSRMLS_CC) == FAILURE) {
efree(compiled_string_description);
php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "Failure evaluating code: %s%s", PHP_EOL, myeval);
- /* php_error_docref() does not return in this case. */
+ if (ASSERTG(bail)) {
+ zend_bailout();
+ }
+ RETURN_FALSE;
}
efree(compiled_string_description);
--- /dev/null
+--TEST--
+catch assert() errors
+--FILE--
+<?php
+function handler($errno, $errstr) {
+ echo "in handler()\n";
+ assert(E_RECOVERABLE_ERROR === $errno);
+ var_dump($errstr);
+}
+
+set_error_handler('handler', E_RECOVERABLE_ERROR);
+
+assert(1);
+assert('1');
+assert('$a');
+
+assert('aa=sd+as+safsafasfaçsafçsafç');
+
+assert('0');
+
+assert_options(ASSERT_BAIL, 1);
+assert('aa=sd+as+safsafasfaçsafçsafç');
+
+echo "done\n";
+
+?>
+--EXPECTF--
+Notice: Undefined variable: a in %sassert02.php(12) : assert code on line 1
+
+Warning: assert(): Assertion "$a" failed in %sassert02.php on line 12
+
+Parse error: syntax error, unexpected '=' in %sassert02.php(14) : assert code on line 1
+in handler()
+string(64) "assert(): Failure evaluating code:
+aa=sd+as+safsafasfaçsafçsafç"
+
+Warning: assert(): Assertion "0" failed in %sassert02.php on line 16
+
+Parse error: syntax error, unexpected '=' in %sassert02.php(19) : assert code on line 1
+in handler()
+string(64) "assert(): Failure evaluating code:
+aa=sd+as+safsafasfaçsafçsafç"