]> granicus.if.org Git - php/commitdiff
Promote warnings to errors in str_pad()
authorGeorge Peter Banyard <girgias@php.net>
Thu, 22 Aug 2019 10:03:22 +0000 (12:03 +0200)
committerGeorge Peter Banyard <girgias@php.net>
Sun, 25 Aug 2019 18:13:27 +0000 (20:13 +0200)
ext/standard/string.c
ext/standard/tests/strings/str_pad.phpt
ext/standard/tests/strings/str_pad_variation2.phpt [new file with mode: 0644]

index 0ddc1f695680ae7871e1a9afff8e18761df9f011..823d1ab4c1cbd07815c925a45b885eabc362ceaf 100644 (file)
@@ -5683,12 +5683,12 @@ PHP_FUNCTION(str_pad)
        }
 
        if (pad_str_len == 0) {
-               php_error_docref(NULL, E_WARNING, "Padding string cannot be empty");
+               zend_throw_error(NULL, "Padding string cannot be empty");
                return;
        }
 
        if (pad_type_val < STR_PAD_LEFT || pad_type_val > STR_PAD_BOTH) {
-               php_error_docref(NULL, E_WARNING, "Padding type has to be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH");
+               zend_throw_error(NULL, "Padding type has to be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH");
                return;
        }
 
index be4c9ed9428695dd25d532e0eabca37dddc1580f..a4f60bfa6ae277ebee476fe74613024d5dc0029d 100644 (file)
Binary files a/ext/standard/tests/strings/str_pad.phpt and b/ext/standard/tests/strings/str_pad.phpt differ
diff --git a/ext/standard/tests/strings/str_pad_variation2.phpt b/ext/standard/tests/strings/str_pad_variation2.phpt
new file mode 100644 (file)
index 0000000..1ebf1b2
--- /dev/null
@@ -0,0 +1,70 @@
+--TEST--
+str_pad() function: usage variations - Non printable chars
+--INI--
+precision=14
+--FILE--
+<?php
+// Split from str_pad for NUL Bytes
+// 7-bit ASCII
+$string = chr(0).chr(255).chr(128).chr(234).chr(143);
+
+/* different pad_lengths */
+$pad_lengths = [
+    -PHP_INT_MAX,  // huge negative value
+       -1,  // negative value
+    0,  // pad_length < sizeof(input_string)
+    9,  // pad_length <= sizeof(input_string)
+    10,  // pad_length > sizeof(input_string)
+    16,  // pad_length > sizeof(input_string)
+];
+
+$pad_string = "=";
+
+/*loop through to use each variant of $pad_length on
+  each element of $input_strings array */
+foreach ($pad_lengths as $pad_length ) {
+    // default pad_string & pad_type
+    var_dump( bin2hex( str_pad($string, $pad_length) ) );
+    // default pad_type
+    var_dump( bin2hex( str_pad($string, $pad_length, $pad_string) ) );
+    var_dump( bin2hex( str_pad($string, $pad_length, $pad_string, STR_PAD_LEFT) ) );
+    var_dump( bin2hex( str_pad($string, $pad_length, $pad_string, STR_PAD_RIGHT) ) );
+    var_dump( bin2hex( str_pad($string, $pad_length, $pad_string, STR_PAD_BOTH) ) );
+}
+
+?>
+
+DONE
+--EXPECT--
+string(10) "00ff80ea8f"
+string(10) "00ff80ea8f"
+string(10) "00ff80ea8f"
+string(10) "00ff80ea8f"
+string(10) "00ff80ea8f"
+string(10) "00ff80ea8f"
+string(10) "00ff80ea8f"
+string(10) "00ff80ea8f"
+string(10) "00ff80ea8f"
+string(10) "00ff80ea8f"
+string(10) "00ff80ea8f"
+string(10) "00ff80ea8f"
+string(10) "00ff80ea8f"
+string(10) "00ff80ea8f"
+string(10) "00ff80ea8f"
+string(18) "00ff80ea8f20202020"
+string(18) "00ff80ea8f3d3d3d3d"
+string(18) "3d3d3d3d00ff80ea8f"
+string(18) "00ff80ea8f3d3d3d3d"
+string(18) "3d3d00ff80ea8f3d3d"
+string(20) "00ff80ea8f2020202020"
+string(20) "00ff80ea8f3d3d3d3d3d"
+string(20) "3d3d3d3d3d00ff80ea8f"
+string(20) "00ff80ea8f3d3d3d3d3d"
+string(20) "3d3d00ff80ea8f3d3d3d"
+string(32) "00ff80ea8f2020202020202020202020"
+string(32) "00ff80ea8f3d3d3d3d3d3d3d3d3d3d3d"
+string(32) "3d3d3d3d3d3d3d3d3d3d3d00ff80ea8f"
+string(32) "00ff80ea8f3d3d3d3d3d3d3d3d3d3d3d"
+string(32) "3d3d3d3d3d00ff80ea8f3d3d3d3d3d3d"
+
+DONE