bug21732.phpt 641 B

12345678910111213141516171819202122232425262728293031
  1. --TEST--
  2. Bug #21732 (preg_replace() segfaults with invalid parameters)
  3. --FILE--
  4. <?php
  5. class foo {
  6. function cb($param) {
  7. var_dump($param);
  8. return "yes!";
  9. }
  10. }
  11. try {
  12. var_dump(preg_replace('', array(), ''));
  13. } catch (TypeError $e) {
  14. echo $e->getMessage(), "\n";
  15. }
  16. var_dump(preg_replace_callback("/(ab)(cd)(e)/", array(new foo(), "cb"), 'abcde'));
  17. ?>
  18. --EXPECT--
  19. preg_replace(): Argument #1 ($pattern) must be of type array when argument #2 ($replacement) is an array, string given
  20. array(4) {
  21. [0]=>
  22. string(5) "abcde"
  23. [1]=>
  24. string(2) "ab"
  25. [2]=>
  26. string(2) "cd"
  27. [3]=>
  28. string(1) "e"
  29. }
  30. string(4) "yes!"