From ec2b150da0c0f38fa1e876f672a65a91741d65ed Mon Sep 17 00:00:00 2001 From: Nuno Lopes Date: Sat, 1 Jul 2006 12:29:38 +0000 Subject: [PATCH] MFB5.2: fix assert() problems --- ext/standard/assert.c | 5 ++- ext/standard/tests/assert/assert02.phpt | 58 +++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 ext/standard/tests/assert/assert02.phpt diff --git a/ext/standard/assert.c b/ext/standard/assert.c index 9293f99b528..ed7b523d56f 100644 --- a/ext/standard/assert.c +++ b/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); diff --git a/ext/standard/tests/assert/assert02.phpt b/ext/standard/tests/assert/assert02.phpt new file mode 100644 index 00000000000..d93085eff75 --- /dev/null +++ b/ext/standard/tests/assert/assert02.phpt @@ -0,0 +1,58 @@ +--TEST-- +catch assert() errors +--FILE-- + +--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"