int do_pad; /* Whether we should do padding at all */
int i;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|lz", &input, &pad_size, &pad_value) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "alz", &input, &pad_size, &pad_value) == FAILURE) {
return;
}
num_pads = pad_size_abs - input_size;
if (num_pads > 1048576) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "You may only pad up to 1048576 elements at a time");
+ zval_dtor(return_value);
RETURN_FALSE;
}
pads = (zval ***)safe_emalloc(num_pads, sizeof(zval **), 0);
--- /dev/null
+--TEST--
+array_pad() tests
+--FILE--
+<?php
+
+var_dump(array_pad());
+var_dump(array_pad(array()));
+var_dump(array_pad(array(), 1));
+var_dump(array_pad(array(), 1, 0));
+
+var_dump(array_pad(array(), 0, 0));
+var_dump(array_pad(array(), -1, 0));
+var_dump(array_pad(array("", -1, 2.0), 5, 0));
+var_dump(array_pad(array("", -1, 2.0), 5, array()));
+var_dump(array_pad(array("", -1, 2.0), 2, array()));
+var_dump(array_pad(array("", -1, 2.0), -3, array()));
+var_dump(array_pad(array("", -1, 2.0), -4, array()));
+var_dump(array_pad(array("", -1, 2.0), 2000000, 0));
+
+echo "Done\n";
+?>
+--EXPECTF--
+Warning: array_pad() expects exactly 3 parameters, 0 given in %s on line %d
+NULL
+
+Warning: array_pad() expects exactly 3 parameters, 1 given in %s on line %d
+NULL
+
+Warning: array_pad() expects exactly 3 parameters, 2 given in %s on line %d
+NULL
+array(1) {
+ [0]=>
+ int(0)
+}
+array(0) {
+}
+array(1) {
+ [0]=>
+ int(0)
+}
+array(5) {
+ [0]=>
+ string(0) ""
+ [1]=>
+ int(-1)
+ [2]=>
+ float(2)
+ [3]=>
+ int(0)
+ [4]=>
+ int(0)
+}
+array(5) {
+ [0]=>
+ string(0) ""
+ [1]=>
+ int(-1)
+ [2]=>
+ float(2)
+ [3]=>
+ array(0) {
+ }
+ [4]=>
+ array(0) {
+ }
+}
+array(3) {
+ [0]=>
+ string(0) ""
+ [1]=>
+ int(-1)
+ [2]=>
+ float(2)
+}
+array(3) {
+ [0]=>
+ string(0) ""
+ [1]=>
+ int(-1)
+ [2]=>
+ float(2)
+}
+array(4) {
+ [0]=>
+ array(0) {
+ }
+ [1]=>
+ string(0) ""
+ [2]=>
+ int(-1)
+ [3]=>
+ float(2)
+}
+
+Warning: array_pad(): You may only pad up to 1048576 elements at a time in %s on line %d
+bool(false)
+Done
+--UEXPECTF--
+Warning: array_pad() expects exactly 3 parameters, 0 given in %s on line %d
+NULL
+
+Warning: array_pad() expects exactly 3 parameters, 1 given in %s on line %d
+NULL
+
+Warning: array_pad() expects exactly 3 parameters, 2 given in %s on line %d
+NULL
+array(1) {
+ [0]=>
+ int(0)
+}
+array(0) {
+}
+array(1) {
+ [0]=>
+ int(0)
+}
+array(5) {
+ [0]=>
+ unicode(0) ""
+ [1]=>
+ int(-1)
+ [2]=>
+ float(2)
+ [3]=>
+ int(0)
+ [4]=>
+ int(0)
+}
+array(5) {
+ [0]=>
+ unicode(0) ""
+ [1]=>
+ int(-1)
+ [2]=>
+ float(2)
+ [3]=>
+ array(0) {
+ }
+ [4]=>
+ array(0) {
+ }
+}
+array(3) {
+ [0]=>
+ unicode(0) ""
+ [1]=>
+ int(-1)
+ [2]=>
+ float(2)
+}
+array(3) {
+ [0]=>
+ unicode(0) ""
+ [1]=>
+ int(-1)
+ [2]=>
+ float(2)
+}
+array(4) {
+ [0]=>
+ array(0) {
+ }
+ [1]=>
+ unicode(0) ""
+ [2]=>
+ int(-1)
+ [3]=>
+ float(2)
+}
+
+Warning: array_pad(): You may only pad up to 1048576 elements at a time in %s on line %d
+bool(false)
+Done