Browse Source

MFB5.2: fix assert() problems

migration/RELEASE_1_0_0
Nuno Lopes 20 years ago
parent
commit
ec2b150da0
  1. 5
      ext/standard/assert.c
  2. 58
      ext/standard/tests/assert/assert02.phpt

5
ext/standard/assert.c

@ -162,7 +162,10 @@ PHP_FUNCTION(assert)
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;
}
if (free_tmp) {
zval_dtor(&tmp);

58
ext/standard/tests/assert/assert02.phpt

@ -0,0 +1,58 @@
--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+safsafasfasafsaf');
assert('0');
assert_options(ASSERT_BAIL, 1);
assert('aa=sd+as+safsafasfasafsaf');
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(61) "assert(): Failure evaluating code:
aa=sd+as+safsafasfasafsaf"
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(61) "assert(): Failure evaluating code:
aa=sd+as+safsafasfasafsaf"
--EXPECTUF--
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()
unicode(61) "assert(): Failure evaluating code:
aa=sd+as+safsafasfasafsaf"
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()
unicode(61) "assert(): Failure evaluating code:
aa=sd+as+safsafasfasafsaf"
Loading…
Cancel
Save