From 555eec7d862aa462c2d12cac4d7aaec399181c58 Mon Sep 17 00:00:00 2001 From: =?utf8?q?M=C3=A1t=C3=A9=20Kocsis?= Date: Tue, 10 Dec 2019 23:50:10 +0100 Subject: [PATCH] Promote warnings to exceptions for some filter functions --- ext/standard/tests/filters/001.phpt | 31 +++++++++++++++++++---------- ext/standard/user_filters.c | 14 ++++++------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/ext/standard/tests/filters/001.phpt b/ext/standard/tests/filters/001.phpt index 53d9fc2b50..0c502d4611 100644 --- a/ext/standard/tests/filters/001.phpt +++ b/ext/standard/tests/filters/001.phpt @@ -2,22 +2,31 @@ stream_filter_register() and invalid arguments --FILE-- getMessage() . "\n"; +} + +try { + stream_filter_register("test", ""); +} catch (ValueError $exception) { + echo $exception->getMessage() . "\n"; +} + +try { + stream_filter_register("", "test"); +} catch (ValueError $exception) { + echo $exception->getMessage() . "\n"; +} -var_dump(stream_filter_register("", "")); -var_dump(stream_filter_register("test", "")); -var_dump(stream_filter_register("", "test")); var_dump(stream_filter_register("------", "nonexistentclass")); echo "Done\n"; ?> --EXPECTF-- -Warning: stream_filter_register(): Filter name cannot be empty in %s on line %d -bool(false) - -Warning: stream_filter_register(): Class name cannot be empty in %s on line %d -bool(false) - -Warning: stream_filter_register(): Filter name cannot be empty in %s on line %d -bool(false) +Filter name cannot be empty +Class name cannot be empty +Filter name cannot be empty bool(true) Done diff --git a/ext/standard/user_filters.c b/ext/standard/user_filters.c index 9f3acf73fd..18843e85d5 100644 --- a/ext/standard/user_filters.c +++ b/ext/standard/user_filters.c @@ -389,7 +389,7 @@ static void filter_item_dtor(zval *zv) efree(fdat); } -/* {{{ proto object|false stream_bucket_make_writeable(resource brigade) +/* {{{ proto object|null stream_bucket_make_writeable(resource brigade) Return a bucket object from the brigade for operating on */ PHP_FUNCTION(stream_bucket_make_writeable) { @@ -434,8 +434,8 @@ static void php_stream_bucket_attach(int append, INTERNAL_FUNCTION_PARAMETERS) ZEND_PARSE_PARAMETERS_END(); if (NULL == (pzbucket = zend_hash_str_find(Z_OBJPROP_P(zobject), "bucket", sizeof("bucket")-1))) { - php_error_docref(NULL, E_WARNING, "Object has no bucket property"); - RETURN_FALSE; + zend_value_error("Object has no bucket property"); + return; } if ((brigade = (php_stream_bucket_brigade*)zend_fetch_resource( @@ -505,7 +505,6 @@ PHP_FUNCTION(stream_bucket_new) ZEND_PARSE_PARAMETERS_END(); php_stream_from_zval(stream, zstream); - pbuffer = pemalloc(buffer_len, php_stream_is_persistent(stream)); memcpy(pbuffer, buffer, buffer_len); @@ -564,15 +563,13 @@ PHP_FUNCTION(stream_filter_register) Z_PARAM_STR(classname) ZEND_PARSE_PARAMETERS_END(); - RETVAL_FALSE; - if (!ZSTR_LEN(filtername)) { - php_error_docref(NULL, E_WARNING, "Filter name cannot be empty"); + zend_value_error("Filter name cannot be empty"); return; } if (!ZSTR_LEN(classname)) { - php_error_docref(NULL, E_WARNING, "Class name cannot be empty"); + zend_value_error("Class name cannot be empty"); return; } @@ -590,6 +587,7 @@ PHP_FUNCTION(stream_filter_register) } else { zend_string_release_ex(classname, 0); efree(fdat); + RETVAL_FALSE; } } /* }}} */ -- 2.50.1