bug63176.phpt 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. --TEST--
  2. Bug #63176 (Segmentation fault when instantiate 2 persistent PDO to the same db server)
  3. --SKIPIF--
  4. <?php
  5. require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
  6. require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
  7. MySQLPDOTest::skip();
  8. ?>
  9. --FILE--
  10. <?php
  11. require(dirname(__FILE__). DIRECTORY_SEPARATOR . 'config.inc');
  12. class PDO2 extends PDO {
  13. protected $transLevel;
  14. }
  15. class PDO3 extends PDO {
  16. protected $tomato;
  17. }
  18. class ModelA {
  19. public function __construct($h) {
  20. var_dump($h);
  21. if ($h) {
  22. $this->db = new PDO2(PDO_MYSQL_TEST_DSN, PDO_MYSQL_TEST_USER, PDO_MYSQL_TEST_PASS, array(PDO::ATTR_PERSISTENT => true));
  23. } else {
  24. $this->db = new PDO3(PDO_MYSQL_TEST_DSN, PDO_MYSQL_TEST_USER, PDO_MYSQL_TEST_PASS, array(PDO::ATTR_PERSISTENT => true));
  25. }
  26. $this->db->query('SELECT 1')->fetchAll();
  27. }
  28. }
  29. $a = new ModelA(true);
  30. $b = new ModelA(false);
  31. var_dump($a);
  32. var_dump($b);
  33. --EXPECTF--
  34. bool(true)
  35. bool(false)
  36. object(ModelA)#%d (1) {
  37. ["db"]=>
  38. object(PDO2)#%d (1) {
  39. ["transLevel":protected]=>
  40. NULL
  41. }
  42. }
  43. object(ModelA)#%d (1) {
  44. ["db"]=>
  45. object(PDO2)#%d (1) {
  46. ["transLevel":protected]=>
  47. NULL
  48. }
  49. }