bug66033.phpt 746 B

123456789101112131415161718192021222324252627282930313233
  1. --TEST--
  2. Bug #66033 (Segmentation Fault when constructor of PDO statement throws an exception)
  3. --SKIPIF--
  4. <?php
  5. if (!extension_loaded('pdo_sqlite')) print 'skip not loaded';
  6. ?>
  7. --FILE--
  8. <?php
  9. class DBStatement extends PDOStatement {
  10. public $dbh;
  11. protected function __construct($dbh) {
  12. $this->dbh = $dbh;
  13. throw new Exception("Blah");
  14. }
  15. }
  16. $pdo = new PDO('sqlite::memory:', null, null);
  17. $pdo->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('DBStatement',
  18. array($pdo)));
  19. $pdo->exec("CREATE TABLE IF NOT EXISTS messages (
  20. id INTEGER PRIMARY KEY,
  21. title TEXT,
  22. message TEXT,
  23. time INTEGER)");
  24. try {
  25. $pdoStatement = $pdo->query("select * from messages");
  26. } catch (Exception $e) {
  27. var_dump($e->getMessage());
  28. }
  29. ?>
  30. --EXPECT--
  31. string(4) "Blah"