bug28974.phpt 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. --TEST--
  2. Bug #28974 (array_(p)slice() treats large lengths incorrectly - overflow)
  3. --FILE--
  4. <?php
  5. $a = $b = $c = array(0,1,2,3,4,5);
  6. print_r($a);
  7. // this is ok:
  8. print_r(array_slice($a,2,2147483645));
  9. // this is wrong:
  10. print_r(array_slice($a,2,2147483646));
  11. echo 'print_r(array_splice($a,2,1));'."\n";
  12. print_r(array_splice($a,2,1));
  13. echo "\$a is :";
  14. print_r($a);
  15. echo 'print_r(array_splice($b,2,2147483645));'."\n";
  16. print_r(array_splice($b,2,2147483645));
  17. echo "\$b is :";
  18. print_r($b);
  19. // this is wrong:
  20. echo 'print_r(array_splice($c,2,2147483646));'."\n";
  21. print_r(array_splice($c,2,2147483646));
  22. echo "\$c is :";
  23. print_r($c);
  24. ?>
  25. --EXPECT--
  26. Array
  27. (
  28. [0] => 0
  29. [1] => 1
  30. [2] => 2
  31. [3] => 3
  32. [4] => 4
  33. [5] => 5
  34. )
  35. Array
  36. (
  37. [0] => 2
  38. [1] => 3
  39. [2] => 4
  40. [3] => 5
  41. )
  42. Array
  43. (
  44. [0] => 2
  45. [1] => 3
  46. [2] => 4
  47. [3] => 5
  48. )
  49. print_r(array_splice($a,2,1));
  50. Array
  51. (
  52. [0] => 2
  53. )
  54. $a is :Array
  55. (
  56. [0] => 0
  57. [1] => 1
  58. [2] => 3
  59. [3] => 4
  60. [4] => 5
  61. )
  62. print_r(array_splice($b,2,2147483645));
  63. Array
  64. (
  65. [0] => 2
  66. [1] => 3
  67. [2] => 4
  68. [3] => 5
  69. )
  70. $b is :Array
  71. (
  72. [0] => 0
  73. [1] => 1
  74. )
  75. print_r(array_splice($c,2,2147483646));
  76. Array
  77. (
  78. [0] => 2
  79. [1] => 3
  80. [2] => 4
  81. [3] => 5
  82. )
  83. $c is :Array
  84. (
  85. [0] => 0
  86. [1] => 1
  87. )