123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- --TEST--
- Bug #72294 Segmentation fault/invalid pointer in connection with pgsql_stmt_dtor
- --EXTENSIONS--
- pdo
- pdo_pgsql
- --SKIPIF--
- <?php
- require __DIR__ . '/config.inc';
- require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
- PDOTest::skip();
- ?>
- --FILE--
- <?php
- require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
- function handleError($errno, $errstr, $errfile, $errline)
- {
- if (!($errno & error_reporting())) {
- return false;
- }
- throw new RuntimeException( $errstr, $errno );
- }
- abstract class PHPUnit_Framework_TestCase
- {
- private $name = null;
- private $result;
- public function run(PHPUnit_Framework_TestResult $result = null)
- {
- $result->run($this);
- }
- public function runBare()
- {
- $class = new ReflectionClass($this);
- $method = $class->getMethod($this->name);
- $method->invoke($this);
- if( $x ) {
- }
- }
- public function setName($name)
- {
- $this->name = $name;
- }
- }
- class PHPUnit_Framework_TestFailure
- {
- private $testName;
- protected $failedTest;
- protected $thrownException;
- public function __construct( $failedTest, $t)
- {
- if ($failedTest instanceof PHPUnit_Framework_SelfDescribing) {
- $this->testName = $failedTest->toString();
- } else {
- $this->testName = get_class($failedTest);
- }
- $this->thrownException = $t;
- }
- }
- class PHPUnit_Framework_TestResult
- {
- public function run( $test)
- {
- $error = false;
- $oldErrorHandler = set_error_handler(
- 'handleError',
- E_ALL
- );
- try {
- $test->runBare();
- } catch (RuntimeException $e) {
- $error = true;
- }
- restore_error_handler();
- if ($error === true) {
- $this->errors[] = new PHPUnit_Framework_TestFailure($test, $e);
- }
- }
- }
- $result = new PHPUnit_Framework_TestResult();
- class PreparedStatementCache
- {
- private $cached_statements = array();
- public function prepare( $pdo, $sql )
- {
- //return $pdo->prepare( $sql );
- $this->cached_statements[$sql] = $pdo->prepare( $sql );
- return $this->cached_statements[$sql];
- }
- }
- class DatabaseTest extends PHPUnit_Framework_TestCase
- {
- public function testIt()
- {
- $pdo = PDOTest::test_factory(__DIR__ . '/common.phpt');
- $prepared_statement_cache = new PreparedStatementCache( $pdo );
- for( $i = 1; $i <= 300; ++$i ) {
- $statement = $prepared_statement_cache->prepare( $pdo, <<<SQL
- SELECT $i;
- SQL
- );
- $statement->execute();
- }
- }
- public function test_construct()
- {
- $pdo = PDOTest::test_factory(__DIR__ . '/common.phpt');
- $pdo->exec( 'CREATE TEMPORARY TABLE temp_table ( test_column INT NOT NULL );' );
- $this->cache = new PreparedStatementCache( $pdo );
- $statement = $this->cache->prepare( $pdo, 'SELECT * FROM temp_table WHERE test_column > 0' );
- $statement->execute();
- }
- }
- $test = new DatabaseTest();
- $test->setName( 'testIt' );
- $test->run( $result );
- $test->setName( 'test_construct' );
- $test->run( $result );
- ?>
- ==NOCRASH==
- --EXPECT--
- ==NOCRASH==
|