]> granicus.if.org Git - php/commitdiff
Convert some warnings to Error in zlib extension
authorGeorge Peter Banyard <girgias@php.net>
Sun, 8 Dec 2019 13:15:27 +0000 (14:15 +0100)
committerGeorge Peter Banyard <girgias@php.net>
Wed, 8 Jan 2020 23:56:58 +0000 (00:56 +0100)
Closes GH-4985

13 files changed:
ext/zlib/tests/005.phpt
ext/zlib/tests/006.phpt
ext/zlib/tests/007.phpt
ext/zlib/tests/deflate_add_error.phpt
ext/zlib/tests/deflate_init_error.phpt
ext/zlib/tests/gzcompress_error1.phpt
ext/zlib/tests/gzdeflate_error1.phpt
ext/zlib/tests/gzencode_error1.phpt
ext/zlib/tests/inflate_add_error.phpt
ext/zlib/tests/inflate_init_error.phpt
ext/zlib/zlib.c
ext/zlib/zlib.stub.php
ext/zlib/zlib_arginfo.h

index cf93859d4465a3ec8e4b202f20a6dc9add683511..da81c48c7309657ba9e60bba8d1a6f56d93c3713 100644 (file)
@@ -5,9 +5,13 @@ gzcompress()/gzuncompress() and invalid params
 --FILE--
 <?php
 
-var_dump(gzcompress("", 1000));
-var_dump(gzcompress("", -1));
+try {
+    var_dump(gzcompress("", 1000));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
+var_dump(gzcompress("", -1));
 var_dump(gzcompress(""));
 var_dump(gzcompress("", 9));
 
@@ -18,8 +22,17 @@ Desolation, grief and agony";
 var_dump($data1 = gzcompress($string));
 var_dump($data2 = gzcompress($string, 9));
 
-var_dump(gzuncompress("", 1000));
-var_dump(gzuncompress("", -1));
+try {
+    var_dump(gzuncompress("", 1000));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
+
+try {
+    var_dump(gzuncompress("", -1));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
 var_dump(gzuncompress(""));
 var_dump(gzuncompress("", 9));
@@ -29,11 +42,9 @@ var_dump(gzuncompress($data2));
 $data2[4] = 0;
 var_dump(gzuncompress($data2));
 
-echo "Done\n";
 ?>
 --EXPECTF--
-Warning: gzcompress(): compression level (1000) must be within -1..9 in %s on line %d
-bool(false)
+Compression level (1000) must be within -1..9
 string(%d) "%a"
 string(%d) "%a"
 string(%d) "%a"
@@ -42,9 +53,7 @@ string(%d) "%a"
 
 Warning: gzuncompress(): %s error in %s on line %d
 bool(false)
-
-Warning: gzuncompress(): length (-1) must be greater or equal zero in %s on line %d
-bool(false)
+Length (-1) must be greater or equal zero
 
 Warning: gzuncompress(): %s error in %s on line %d
 bool(false)
@@ -60,4 +69,3 @@ Desolation, grief and agony"
 
 Warning: gzuncompress(): %s error in %s on line %d
 bool(false)
-Done
index ad1eb25f12e8346b2caa53ef93614b106127d878..32965ea65a5658882d3000b1096644f2bab977d2 100644 (file)
@@ -5,7 +5,12 @@ gzdeflate()/gzinflate() and invalid params
 --FILE--
 <?php
 
-var_dump(gzdeflate("", 1000));
+try {
+    var_dump(gzcompress("", 1000));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
+
 var_dump(gzdeflate("", -1));
 
 var_dump(gzdeflate(""));
@@ -20,7 +25,12 @@ var_dump($data2 = gzdeflate($string, 9));
 
 var_dump(gzinflate(""));
 var_dump(gzinflate("asfwe", 1000));
-var_dump(gzinflate("asdf", -1));
+
+try {
+    var_dump(gzinflate("asdf", -1));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
 var_dump(gzinflate("asdf"));
 var_dump(gzinflate("asdf", 9));
@@ -30,11 +40,9 @@ var_dump(gzinflate($data2));
 $data2[4] = 0;
 var_dump(gzinflate($data2));
 
-echo "Done\n";
 ?>
 --EXPECTF--
-Warning: gzdeflate(): compression level (1000) must be within -1..9 in %s on line %d
-bool(false)
+Compression level (1000) must be within -1..9
 string(%d) "%a"
 string(%d) "%a"
 string(%d) "%a"
@@ -46,9 +54,7 @@ bool(false)
 
 Warning: gzinflate(): data error in %s on line %d
 bool(false)
-
-Warning: gzinflate(): length (-1) must be greater or equal zero in %s on line %d
-bool(false)
+Length (-1) must be greater or equal zero
 
 Warning: gzinflate(): data error in %s on line %d
 bool(false)
@@ -64,4 +70,3 @@ Desolation, grief and agony"
 
 Warning: gzinflate(): data error in %s on line %d
 bool(false)
-Done
index 6028104b9ad0df296a77374c3a8565bc1f132622..f51d0d3fc5971dc6c85beb3203cbb701478e61eb 100644 (file)
@@ -5,9 +5,21 @@ gzencode() and invalid params
 --FILE--
 <?php
 
-var_dump(gzencode("", -10));
-var_dump(gzencode("", 100));
-var_dump(gzencode("", 1, 100));
+try {
+    var_dump(gzencode("", -10));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
+try {
+    var_dump(gzencode("", 100));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
+try {
+    var_dump(gzencode("", 1, 100));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
 var_dump(gzencode("", -1, ZLIB_ENCODING_GZIP));
 var_dump(gzencode("", 9, ZLIB_ENCODING_DEFLATE));
@@ -17,27 +29,22 @@ Light in this temple
 Light in my truth
 Lies in the darkness";
 
-var_dump(gzencode($string, 9, 3));
+try {
+    var_dump(gzencode($string, 9, 3));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
 var_dump(gzencode($string, -1, ZLIB_ENCODING_GZIP));
 var_dump(gzencode($string, 9, ZLIB_ENCODING_DEFLATE));
 
-echo "Done\n";
 ?>
 --EXPECTF--
-Warning: gzencode(): compression level (-10) must be within -1..9 in %s on line %d
-bool(false)
-
-Warning: gzencode(): compression level (100) must be within -1..9 in %s on line %d
-bool(false)
-
-Warning: gzencode(): encoding mode must be either ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE in %s on line %d
-bool(false)
+Compression level (-10) must be within -1..9
+Compression level (100) must be within -1..9
+Encoding mode must be either ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE
 string(%d) "%a"
 string(%d) "%a"
-
-Warning: gzencode(): encoding mode must be either ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE in %s on line %d
-bool(false)
+Encoding mode must be either ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE
 string(%d) "%a"
 string(%d) "%a"
-Done
index 060a00577977258284835f183cc57fc37f22ede7..b2b7d7917c0f001a98d5d24c8ae78b871e60b642 100644 (file)
@@ -9,15 +9,23 @@ if (!extension_loaded("zlib")) {
 --FILE--
 <?php
 $badResource = fopen("php://memory", "r+");
-var_dump(deflate_add($badResource, "test"));
+
+try {
+    var_dump(deflate_add($badResource, "test"));
+} catch (\TypeError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
 $resource = deflate_init(ZLIB_ENCODING_DEFLATE);
 $badFlushType = 6789;
-var_dump(deflate_add($resource, "test", $badFlushType));
-?>
---EXPECTF--
-Warning: deflate_add(): Invalid deflate resource in %s on line %d
-bool(false)
 
-Warning: deflate_add(): flush mode must be ZLIB_NO_FLUSH, ZLIB_PARTIAL_FLUSH, ZLIB_SYNC_FLUSH, ZLIB_FULL_FLUSH, ZLIB_BLOCK or ZLIB_FINISH in %s on line %d
-bool(false)
+try {
+    var_dump(deflate_add($resource, "test", $badFlushType));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
+
+?>
+--EXPECT--
+deflate_add(): supplied resource is not a valid zlib deflate resource
+Flush mode must be ZLIB_NO_FLUSH, ZLIB_PARTIAL_FLUSH, ZLIB_SYNC_FLUSH, ZLIB_FULL_FLUSH, ZLIB_BLOCK or ZLIB_FINISH
index 340a3f1062e2a735b212bbd2a07036a5f2612b99..be3f0974d65264cfb0c6d3773768ccc9f08bb67b 100644 (file)
@@ -8,24 +8,41 @@ if (!extension_loaded("zlib")) {
 ?>
 --FILE--
 <?php
-var_dump(deflate_init(42));
-var_dump(deflate_init(ZLIB_ENCODING_DEFLATE, ['level' => 42]));
-var_dump(deflate_init(ZLIB_ENCODING_DEFLATE, ['level' => -2]));
-var_dump(deflate_init(ZLIB_ENCODING_DEFLATE, ['memory' => 0]));
-var_dump(deflate_init(ZLIB_ENCODING_DEFLATE, ['memory' => 10]));
-?>
---EXPECTF--
-Warning: deflate_init(): encoding mode must be ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE in %s on line %d
-bool(false)
 
-Warning: deflate_init(): compression level (42) must be within -1..9 in %s on line %d
-bool(false)
+try {
+    var_dump(deflate_init(42));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
-Warning: deflate_init(): compression level (-2) must be within -1..9 in %s on line %d
-bool(false)
+try {
+    var_dump(deflate_init(ZLIB_ENCODING_DEFLATE, ['level' => 42]));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
-Warning: deflate_init(): compression memory level (0) must be within 1..9 in %s on line %d
-bool(false)
+try {
+    var_dump(deflate_init(ZLIB_ENCODING_DEFLATE, ['level' => -2]));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
-Warning: deflate_init(): compression memory level (10) must be within 1..9 in %s on line %d
-bool(false)
+try {
+    var_dump(deflate_init(ZLIB_ENCODING_DEFLATE, ['memory' => 0]));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
+
+try {
+    var_dump(deflate_init(ZLIB_ENCODING_DEFLATE, ['memory' => 10]));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
+
+?>
+--EXPECT--
+Encoding mode must be ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE
+Compression level (42) must be within -1..9
+Compression level (-2) must be within -1..9
+Compression memory level (0) must be within 1..9
+Compression memory level (10) must be within 1..9
index 1e514b8db58490e654641ad81f4a6f027003c422..81fe35b27d2663393da2063fc5ca2f910cf8d407 100644 (file)
@@ -23,24 +23,28 @@ echo "*** Testing gzcompress() : error conditions ***\n";
 echo "\n-- Testing with incorrect compression level --\n";
 $data = 'string_val';
 $bad_level = 99;
-var_dump(gzcompress($data, $bad_level));
+try {
+    var_dump(gzcompress($data, $bad_level));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
 echo "\n-- Testing with invalid encoding --\n";
 $data = 'string_val';
 $level = 2;
 $encoding = 99;
-var_dump(gzcompress($data, $level, $encoding));
+try {
+    var_dump(gzcompress($data, $level, $encoding));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
 ?>
---EXPECTF--
+--EXPECT--
 *** Testing gzcompress() : error conditions ***
 
 -- Testing with incorrect compression level --
-
-Warning: gzcompress(): compression level (99) must be within -1..9 in %s on line %d
-bool(false)
+Compression level (99) must be within -1..9
 
 -- Testing with invalid encoding --
-
-Warning: gzcompress(): encoding mode must be either ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE in %s on line %d
-bool(false)
+Encoding mode must be either ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE
index e4d42902bd3b8db4ff0140afb846c4ea24c25b68..9cee96259e30255789f735da249e9f7afdc26466 100644 (file)
@@ -24,23 +24,27 @@ $data = 'string_val';
 
 echo "\n-- Testing with incorrect compression level --\n";
 $bad_level = 99;
-var_dump(gzdeflate($data, $bad_level));
+try {
+    var_dump(gzdeflate($data, $bad_level));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
 echo "\n-- Testing with incorrect encoding --\n";
 $level = 2;
 $bad_encoding = 99;
-var_dump(gzdeflate($data, $level, $bad_encoding));
+try {
+    var_dump(gzdeflate($data, $level, $bad_encoding));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
 ?>
---EXPECTF--
+--EXPECT--
 *** Testing gzdeflate() : error conditions ***
 
 -- Testing with incorrect compression level --
-
-Warning: gzdeflate(): compression level (99) must be within -1..9 in %s on line %d
-bool(false)
+Compression level (99) must be within -1..9
 
 -- Testing with incorrect encoding --
-
-Warning: gzdeflate(): encoding mode must be either ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE in %s on line %d
-bool(false)
+Encoding mode must be either ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE
index a439bb5f3471535ef43f5a3633133ae6ae717a92..6c0974a6f6594d0e7c5ddf286c459e3ee03acbe7 100644 (file)
@@ -26,22 +26,26 @@ $encoding_mode = FORCE_DEFLATE;
 
 echo "\n-- Testing with incorrect compression level --\n";
 $bad_level = 99;
-var_dump(gzencode($data, $bad_level));
+try {
+    var_dump(gzencode($data, $bad_level));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
 echo "\n-- Testing with incorrect encoding_mode --\n";
 $bad_mode = 99;
-var_dump(gzencode($data, $level, $bad_mode));
+try {
+    var_dump(gzencode($data, $level, $bad_mode));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
 ?>
---EXPECTF--
+--EXPECT--
 *** Testing gzencode() : error conditions ***
 
 -- Testing with incorrect compression level --
-
-Warning: gzencode(): compression level (99) must be within -1..9 in %s on line %d
-bool(false)
+Compression level (99) must be within -1..9
 
 -- Testing with incorrect encoding_mode --
-
-Warning: gzencode(): encoding mode must be either ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE in %s on line %d
-bool(false)
+Encoding mode must be either ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE
index 3bc04a0b7c748f7332fcc667dbea89165d787767..9622e5a4c40b8d2dae089b893bb5ead384ee420f 100644 (file)
@@ -8,15 +8,23 @@ if (!extension_loaded("zlib")) {
 ?>
 --FILE--
 <?php
+
 $badResource = fopen("php://memory", "r+");
-var_dump(inflate_add($badResource, "test"));
+try {
+    var_dump(inflate_add($badResource, "test"));
+} catch (\TypeError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
+
 $resource = inflate_init(ZLIB_ENCODING_DEFLATE);
 $badFlushType = 6789;
-var_dump(inflate_add($resource, "test", $badFlushType));
-?>
---EXPECTF--
-Warning: inflate_add(): Invalid zlib.inflate resource in %s on line %d
-bool(false)
+try {
+    var_dump(inflate_add($resource, "test", $badFlushType));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
 
-Warning: inflate_add(): flush mode must be ZLIB_NO_FLUSH, ZLIB_PARTIAL_FLUSH, ZLIB_SYNC_FLUSH, ZLIB_FULL_FLUSH, ZLIB_BLOCK or ZLIB_FINISH in %s on line %d
-bool(false)
+?>
+--EXPECT--
+inflate_add(): supplied resource is not a valid zlib inflate resource
+Flush mode must be ZLIB_NO_FLUSH, ZLIB_PARTIAL_FLUSH, ZLIB_SYNC_FLUSH, ZLIB_FULL_FLUSH, ZLIB_BLOCK or ZLIB_FINISH
index 504f795aec65bed200a86b1ad8d01a2b5a5c0986..1aae9b792bfccd4edc4dc53900656bdf76228c68 100644 (file)
@@ -8,8 +8,13 @@ if (!extension_loaded("zlib")) {
 ?>
 --FILE--
 <?php
-var_dump(inflate_init(42));
+
+try {
+    var_dump(inflate_init(42));
+} catch (\ValueError $e) {
+    echo $e->getMessage() . \PHP_EOL;
+}
+
 ?>
---EXPECTF--
-Warning: inflate_init(): encoding mode must be ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE in %s on line %d
-bool(false)
+--EXPECT--
+Encoding mode must be ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE
index 60824a052c70ad5943014a6405b974c1b70f9525..e4f7c14b23312e6e6a7553796207498d97839a25 100644 (file)
@@ -44,7 +44,9 @@
 #undef gztell
 
 int le_deflate;
+#define le_deflate_name "zlib deflate"
 int le_inflate;
+#define le_inflate_name "zlib inflate"
 
 ZEND_DECLARE_MODULE_GLOBALS(zlib);
 
@@ -65,14 +67,14 @@ static void php_zlib_free(voidpf opaque, voidpf address)
 
 void deflate_rsrc_dtor(zend_resource *res)
 {
-       z_stream *ctx = zend_fetch_resource(res, NULL, le_deflate);
+       z_stream *ctx = zend_fetch_resource(res, le_deflate_name, le_deflate);
        deflateEnd(ctx);
        efree(ctx);
 }
 
 void inflate_rsrc_dtor(zend_resource *res)
 {
-       z_stream *ctx = zend_fetch_resource(res, NULL, le_inflate);
+       z_stream *ctx = zend_fetch_resource(res, le_inflate_name, le_inflate);
        if (((php_zlib_context *) ctx)->inflateDict) {
                efree(((php_zlib_context *) ctx)->inflateDict);
        }
@@ -670,8 +672,8 @@ static PHP_FUNCTION(name) \
                } \
        } \
        if (level < -1 || level > 9) { \
-               php_error_docref(NULL, E_WARNING, "compression level (" ZEND_LONG_FMT ") must be within -1..9", level); \
-               RETURN_FALSE; \
+               zend_value_error("Compression level (" ZEND_LONG_FMT ") must be within -1..9", level); \
+               RETURN_THROWS(); \
        } \
        switch (encoding) { \
                case PHP_ZLIB_ENCODING_RAW: \
@@ -679,8 +681,8 @@ static PHP_FUNCTION(name) \
                case PHP_ZLIB_ENCODING_DEFLATE: \
                        break; \
                default: \
-                       php_error_docref(NULL, E_WARNING, "encoding mode must be either ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE"); \
-                       RETURN_FALSE; \
+                       zend_value_error("Encoding mode must be either ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE"); \
+                       RETURN_THROWS(); \
        } \
        if ((out = php_zlib_encode(ZSTR_VAL(in), ZSTR_LEN(in), encoding, level)) == NULL) { \
                RETURN_FALSE; \
@@ -699,8 +701,8 @@ static PHP_FUNCTION(name) \
                RETURN_THROWS(); \
        } \
        if (max_len < 0) { \
-               php_error_docref(NULL, E_WARNING, "length (" ZEND_LONG_FMT ") must be greater or equal zero", max_len); \
-               RETURN_FALSE; \
+               zend_value_error("Length (" ZEND_LONG_FMT ") must be greater or equal zero", max_len); \
+               RETURN_THROWS(); \
        } \
        if (SUCCESS != php_zlib_decode(in_buf, in_len, &out_buf, &out_len, encoding, max_len)) { \
                RETURN_FALSE; \
@@ -785,7 +787,7 @@ static zend_bool zlib_create_dictionary_string(HashTable *options, char **dict,
                                                        }
                                                        efree(strings);
                                                        if (!EG(exception)) {
-                                                               php_error_docref(NULL, E_WARNING, "dictionary entries must be non-empty strings");
+                                                               zend_value_error("Dictionary entries must be non-empty strings");
                                                        }
                                                        return 0;
                                                }
@@ -795,7 +797,7 @@ static zend_bool zlib_create_dictionary_string(HashTable *options, char **dict,
                                                                        efree(ptr);
                                                                } while (--ptr >= strings);
                                                                efree(strings);
-                                                               php_error_docref(NULL, E_WARNING, "dictionary entries must not contain a NULL-byte");
+                                                               zend_value_error("Dictionary entries must not contain a NULL-byte");
                                                                return 0;
                                                        }
                                                }
@@ -817,7 +819,7 @@ static zend_bool zlib_create_dictionary_string(HashTable *options, char **dict,
                        } break;
 
                        default:
-                               php_error_docref(NULL, E_WARNING, "dictionary must be of type zero-terminated string or array, got %s", zend_get_type_by_const(Z_TYPE_P(option_buffer)));
+                               zend_type_error("dictionary must be of type zero-terminated string or array, got %s", zend_get_type_by_const(Z_TYPE_P(option_buffer)));
                                return 0;
                }
        }
@@ -844,8 +846,8 @@ PHP_FUNCTION(inflate_init)
                window = zval_get_long(option_buffer);
        }
        if (window < 8 || window > 15) {
-               php_error_docref(NULL, E_WARNING, "zlib window size (lograithm) (" ZEND_LONG_FMT ") must be within 8..15", window);
-               RETURN_FALSE;
+               zend_value_error("zlib window size (logarithm) (" ZEND_LONG_FMT ") must be within 8..15", window);
+               RETURN_THROWS();
        }
 
        if (!zlib_create_dictionary_string(options, &dict, &dictlen)) {
@@ -858,8 +860,8 @@ PHP_FUNCTION(inflate_init)
                case PHP_ZLIB_ENCODING_DEFLATE:
                        break;
                default:
-                       php_error_docref(NULL, E_WARNING, "encoding mode must be ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE");
-                       RETURN_FALSE;
+                       zend_value_error("Encoding mode must be ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE");
+                       RETURN_THROWS();
        }
 
        ctx = ecalloc(1, sizeof(php_zlib_context));
@@ -887,7 +889,6 @@ PHP_FUNCTION(inflate_init)
                                        php_error_docref(NULL, E_WARNING, "dictionary does not match expected dictionary (incorrect adler32 hash)");
                                        efree(php_ctx->inflateDict);
                                        php_ctx->inflateDict = NULL;
-                                       RETURN_FALSE;
                                EMPTY_SWITCH_DEFAULT_CASE()
                        }
                }
@@ -916,9 +917,8 @@ PHP_FUNCTION(inflate_add)
                RETURN_THROWS();
        }
 
-       if (!(ctx = zend_fetch_resource_ex(res, NULL, le_inflate))) {
-               php_error_docref(NULL, E_WARNING, "Invalid zlib.inflate resource");
-               RETURN_FALSE;
+       if ((ctx = zend_fetch_resource(Z_RES_P(res), le_inflate_name, le_inflate)) == NULL) {
+               RETURN_THROWS();
        }
 
        switch (flush_type) {
@@ -931,9 +931,9 @@ PHP_FUNCTION(inflate_add)
                        break;
 
                default:
-                       php_error_docref(NULL, E_WARNING,
-                               "flush mode must be ZLIB_NO_FLUSH, ZLIB_PARTIAL_FLUSH, ZLIB_SYNC_FLUSH, ZLIB_FULL_FLUSH, ZLIB_BLOCK or ZLIB_FINISH");
-                       RETURN_FALSE;
+                       zend_value_error(
+                               "Flush mode must be ZLIB_NO_FLUSH, ZLIB_PARTIAL_FLUSH, ZLIB_SYNC_FLUSH, ZLIB_FULL_FLUSH, ZLIB_BLOCK or ZLIB_FINISH");
+                       RETURN_THROWS();
        }
 
        /* Lazy-resetting the zlib stream so ctx->total_in remains available until the next inflate_add() call. */
@@ -1031,9 +1031,8 @@ PHP_FUNCTION(inflate_get_status)
                RETURN_THROWS();
        }
 
-       if (!(ctx = zend_fetch_resource_ex(res, NULL, le_inflate))) {
-               php_error_docref(NULL, E_WARNING, "Invalid zlib.inflate resource");
-               RETURN_FALSE;
+       if ((ctx = zend_fetch_resource(Z_RES_P(res), le_inflate_name, le_inflate)) == NULL) {
+               RETURN_THROWS();
        }
 
        RETURN_LONG(((php_zlib_context *) ctx)->status);
@@ -1052,9 +1051,8 @@ PHP_FUNCTION(inflate_get_read_len)
                RETURN_THROWS();
        }
 
-       if (!(ctx = zend_fetch_resource_ex(res, NULL, le_inflate))) {
-               php_error_docref(NULL, E_WARNING, "Invalid zlib.inflate resource");
-               RETURN_FALSE;
+       if ((ctx = zend_fetch_resource(Z_RES_P(res), le_inflate_name, le_inflate)) == NULL) {
+               RETURN_THROWS();
        }
 
        RETURN_LONG(ctx->total_in);
@@ -1080,24 +1078,24 @@ PHP_FUNCTION(deflate_init)
                level = zval_get_long(option_buffer);
        }
        if (level < -1 || level > 9) {
-               php_error_docref(NULL, E_WARNING, "compression level (" ZEND_LONG_FMT ") must be within -1..9", level);
-               RETURN_FALSE;
+               zend_value_error("Compression level (" ZEND_LONG_FMT ") must be within -1..9", level);
+               RETURN_THROWS();
        }
 
        if (options && (option_buffer = zend_hash_str_find(options, ZEND_STRL("memory"))) != NULL) {
                memory = zval_get_long(option_buffer);
        }
        if (memory < 1 || memory > 9) {
-               php_error_docref(NULL, E_WARNING, "compression memory level (" ZEND_LONG_FMT ") must be within 1..9", memory);
-               RETURN_FALSE;
+               zend_value_error("Compression memory level (" ZEND_LONG_FMT ") must be within 1..9", memory);
+               RETURN_THROWS();
        }
 
        if (options && (option_buffer = zend_hash_str_find(options, ZEND_STRL("window"))) != NULL) {
                window = zval_get_long(option_buffer);
        }
        if (window < 8 || window > 15) {
-               php_error_docref(NULL, E_WARNING, "zlib window size (logarithm) (" ZEND_LONG_FMT ") must be within 8..15", window);
-               RETURN_FALSE;
+               zend_value_error("zlib window size (logarithm) (" ZEND_LONG_FMT ") must be within 8..15", window);
+               RETURN_THROWS();
        }
 
        if (options && (option_buffer = zend_hash_str_find(options, ZEND_STRL("strategy"))) != NULL) {
@@ -1111,8 +1109,8 @@ PHP_FUNCTION(deflate_init)
                case Z_DEFAULT_STRATEGY:
                        break;
                default:
-                       php_error_docref(NULL, E_WARNING, "strategy must be one of ZLIB_FILTERED, ZLIB_HUFFMAN_ONLY, ZLIB_RLE, ZLIB_FIXED or ZLIB_DEFAULT_STRATEGY");
-                       RETURN_FALSE;
+                       zend_value_error("Strategy must be one of ZLIB_FILTERED, ZLIB_HUFFMAN_ONLY, ZLIB_RLE, ZLIB_FIXED or ZLIB_DEFAULT_STRATEGY");
+                       RETURN_THROWS();
        }
 
        if (!zlib_create_dictionary_string(options, &dict, &dictlen)) {
@@ -1125,9 +1123,8 @@ PHP_FUNCTION(deflate_init)
                case PHP_ZLIB_ENCODING_DEFLATE:
                        break;
                default:
-                       php_error_docref(NULL, E_WARNING,
-                               "encoding mode must be ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE");
-                       RETURN_FALSE;
+                       zend_value_error("Encoding mode must be ZLIB_ENCODING_RAW, ZLIB_ENCODING_GZIP or ZLIB_ENCODING_DEFLATE");
+                       RETURN_THROWS();
        }
 
        ctx = ecalloc(1, sizeof(php_zlib_context));
@@ -1172,17 +1169,15 @@ PHP_FUNCTION(deflate_add)
                RETURN_THROWS();
        }
 
-       if (!(ctx = zend_fetch_resource_ex(res, NULL, le_deflate))) {
-               php_error_docref(NULL, E_WARNING, "Invalid deflate resource");
-               RETURN_FALSE;
+       if ((ctx = zend_fetch_resource(Z_RES_P(res), le_deflate_name, le_deflate)) == NULL) {
+               RETURN_THROWS();
        }
 
        switch (flush_type) {
                case Z_BLOCK:
 #if ZLIB_VERNUM < 0x1240L
-                       php_error_docref(NULL, E_WARNING,
-                               "zlib >= 1.2.4 required for BLOCK deflate; current version: %s", ZLIB_VERSION);
-                       RETURN_FALSE;
+                       zend_throw_error(NULL, "zlib >= 1.2.4 required for BLOCK deflate; current version: %s", ZLIB_VERSION);
+                       RETURN_THROWS();
 #endif
                case Z_NO_FLUSH:
                case Z_PARTIAL_FLUSH:
@@ -1192,9 +1187,9 @@ PHP_FUNCTION(deflate_add)
                        break;
 
                default:
-                       php_error_docref(NULL, E_WARNING,
-                               "flush mode must be ZLIB_NO_FLUSH, ZLIB_PARTIAL_FLUSH, ZLIB_SYNC_FLUSH, ZLIB_FULL_FLUSH, ZLIB_BLOCK or ZLIB_FINISH");
-                       RETURN_FALSE;
+                       zend_value_error(
+                               "Flush mode must be ZLIB_NO_FLUSH, ZLIB_PARTIAL_FLUSH, ZLIB_SYNC_FLUSH, ZLIB_FULL_FLUSH, ZLIB_BLOCK or ZLIB_FINISH");
+                       RETURN_THROWS();
        }
 
        if (in_len <= 0 && flush_type != Z_FINISH) {
index 312e570de024d78147d992a3c5c09a15ba946180..a4c02bd0ccc3c16b43e1f1117b5ab3af1d58ad9e 100644 (file)
@@ -73,7 +73,7 @@ function inflate_init(int $encoding, array $options = []) {}
 function inflate_add($context, string $encoded_data, int $flush_mode = ZLIB_SYNC_FLUSH): string|false {}
 
 /** @param resource $resource */
-function inflate_get_status($resource): int|false {}
+function inflate_get_status($resource): int {}
 
 /** @param resource $resource */
-function inflate_get_read_len($resource): int|false {}
+function inflate_get_read_len($resource): int {}
index 15f107922a41d30e89da55eb05573d43b5433749..fc5c81b465366122e5627d29c76aa1322ac95bcb 100644 (file)
@@ -114,7 +114,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_inflate_add, 0, 2, MAY_BE_STRING
        ZEND_ARG_TYPE_INFO(0, flush_mode, IS_LONG, 0)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_inflate_get_status, 0, 1, MAY_BE_LONG|MAY_BE_FALSE)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_inflate_get_status, 0, 1, IS_LONG, 0)
        ZEND_ARG_INFO(0, resource)
 ZEND_END_ARG_INFO()