tony2001                Wed Nov 15 22:10:20 2006 UTC

  Added files:                 (Branch: PHP_5_2)
    /php-src/ext/standard/tests/array   array_pad.phpt 

  Modified files:              
    /php-src/ext/standard       array.c 
  Log:
  fix leak, add test
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.308.2.21.2.17&r2=1.308.2.21.2.18&diff_format=u
Index: php-src/ext/standard/array.c
diff -u php-src/ext/standard/array.c:1.308.2.21.2.17 
php-src/ext/standard/array.c:1.308.2.21.2.18
--- php-src/ext/standard/array.c:1.308.2.21.2.17        Sun Nov 12 17:23:01 2006
+++ php-src/ext/standard/array.c        Wed Nov 15 22:10:19 2006
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: array.c,v 1.308.2.21.2.17 2006/11/12 17:23:01 iliaa Exp $ */
+/* $Id: array.c,v 1.308.2.21.2.18 2006/11/15 22:10:19 tony2001 Exp $ */
 
 #include "php.h"
 #include "php_ini.h"
@@ -2656,6 +2656,7 @@
        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);

http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/array_pad.phpt?view=markup&rev=1.1
Index: php-src/ext/standard/tests/array/array_pad.phpt
+++ php-src/ext/standard/tests/array/array_pad.phpt
--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

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to