bug21478.phpt 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. --TEST--
  2. Bug #21478 (Zend/zend_alloc.c :: shutdown_memory_manager produces segfault)
  3. --SKIPIF--
  4. <?php
  5. if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 is needed');
  6. if (!function_exists('stream_filter_register')) die('skip stream_filter_register() not available');
  7. ?>
  8. --FILE--
  9. <?php
  10. class debugfilter extends php_user_filter {
  11. function filter($in, $out, &$consumed, $closing) {
  12. while ($bucket = stream_bucket_make_writeable($in)) {
  13. $bucket->data = strtoupper($bucket->data);
  14. stream_bucket_append($out, $bucket);
  15. $consumed += strlen($bucket->data);
  16. }
  17. return PSFS_PASS_ON;
  18. }
  19. }
  20. stream_filter_register("myfilter","debugfilter");
  21. $fp = fopen(dirname(__FILE__)."/test.txt","w");
  22. stream_filter_append($fp, "myfilter");
  23. stream_filter_append($fp, "myfilter");
  24. stream_filter_append($fp, "myfilter");
  25. fwrite($fp, "This is a test.\n");
  26. print "Done.\n";
  27. fclose($fp);
  28. // Uncommenting the following 'print' line causes the segfault to stop occuring
  29. // print "2\n";
  30. readfile(dirname(__FILE__)."/test.txt");
  31. unlink(dirname(__FILE__)."/test.txt");
  32. ?>
  33. --EXPECT--
  34. Done.
  35. THIS IS A TEST.