felipe Sun, 19 Jul 2009 18:55:31 +0000 URL: http://svn.php.net/viewvc?view=revision&revision=284384 http://bugs.php.net/48773
Changed paths: A php/php-src/branches/PHP_5_2/ext/pdo_sqlite/tests/bug48773.phpt A php/php-src/branches/PHP_5_3/ext/pdo_sqlite/tests/bug48773.phpt U php/php-src/trunk/ext/pdo/pdo_dbh.c A php/php-src/trunk/ext/pdo_sqlite/tests/bug48773.phpt Log: - Fixed bug #48773 (Incorrect error when setting PDO::ATTR_STATEMENT_CLASS with ctor_args) [HEAD only] Added: php/php-src/branches/PHP_5_2/ext/pdo_sqlite/tests/bug48773.phpt =================================================================== --- php/php-src/branches/PHP_5_2/ext/pdo_sqlite/tests/bug48773.phpt (rev 0) +++ php/php-src/branches/PHP_5_2/ext/pdo_sqlite/tests/bug48773.phpt 2009-07-19 18:55:31 UTC (rev 284384) @@ -0,0 +1,34 @@ +--TEST-- +Bug #48773 (Incorrect error when setting PDO::ATTR_STATEMENT_CLASS with ctor_args) +--SKIPIF-- +<?php +if (!extension_loaded('pdo_sqlite')) print 'skip not loaded'; +?> +--FILE-- +<?php + +class bar extends PDOStatement { + private function __construct() { + } +} + +class foo extends PDO { + public $statementClass = 'bar'; + function __construct($dsn, $username, $password, $driver_options = array()) { + $driver_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; + parent::__construct($dsn, $username, $password, $driver_options); + + $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array($this->statementClass, array($this))); + } +} + +$db = new foo('sqlite::memory:', '', ''); +$stmt = $db->query('SELECT 1'); +var_dump($stmt); + +?> +--EXPECTF-- +object(bar)#%d (1) { + [%u|b%"queryString"]=> + %unicode|string%(8) "SELECT 1" +} Property changes on: php/php-src/branches/PHP_5_2/ext/pdo_sqlite/tests/bug48773.phpt ___________________________________________________________________ Added: svn:keywords + Id Rev Revision Added: svn:eol-style + native Added: php/php-src/branches/PHP_5_3/ext/pdo_sqlite/tests/bug48773.phpt =================================================================== --- php/php-src/branches/PHP_5_3/ext/pdo_sqlite/tests/bug48773.phpt (rev 0) +++ php/php-src/branches/PHP_5_3/ext/pdo_sqlite/tests/bug48773.phpt 2009-07-19 18:55:31 UTC (rev 284384) @@ -0,0 +1,34 @@ +--TEST-- +Bug #48773 (Incorrect error when setting PDO::ATTR_STATEMENT_CLASS with ctor_args) +--SKIPIF-- +<?php +if (!extension_loaded('pdo_sqlite')) print 'skip not loaded'; +?> +--FILE-- +<?php + +class bar extends PDOStatement { + private function __construct() { + } +} + +class foo extends PDO { + public $statementClass = 'bar'; + function __construct($dsn, $username, $password, $driver_options = array()) { + $driver_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; + parent::__construct($dsn, $username, $password, $driver_options); + + $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array($this->statementClass, array($this))); + } +} + +$db = new foo('sqlite::memory:', '', ''); +$stmt = $db->query('SELECT 1'); +var_dump($stmt); + +?> +--EXPECTF-- +object(bar)#%d (1) { + [%u|b%"queryString"]=> + %unicode|string%(8) "SELECT 1" +} Property changes on: php/php-src/branches/PHP_5_3/ext/pdo_sqlite/tests/bug48773.phpt ___________________________________________________________________ Added: svn:keywords + Id Rev Revision Added: svn:eol-style + native Modified: php/php-src/trunk/ext/pdo/pdo_dbh.c =================================================================== --- php/php-src/trunk/ext/pdo/pdo_dbh.c 2009-07-19 17:31:36 UTC (rev 284383) +++ php/php-src/trunk/ext/pdo/pdo_dbh.c 2009-07-19 18:55:31 UTC (rev 284384) @@ -775,8 +775,8 @@ } if (Z_TYPE_P(value) != IS_ARRAY || zend_hash_index_find(Z_ARRVAL_P(value), 0, (void**)&item) == FAILURE - || Z_TYPE_PP(item) != IS_STRING - || zend_lookup_class(Z_STRVAL_PP(item), Z_STRLEN_PP(item), &pce TSRMLS_CC) == FAILURE + || !PDO_ZVAL_PP_IS_TEXT(item) + || zend_u_lookup_class(Z_TYPE_PP(item), Z_UNIVAL_PP(item), Z_UNILEN_PP(item), &pce TSRMLS_CC) == FAILURE ) { pdo_raise_impl_error(dbh, NULL, "HY000", "PDO::ATTR_STATEMENT_CLASS requires format array(classname, array(ctor_args)); " Added: php/php-src/trunk/ext/pdo_sqlite/tests/bug48773.phpt =================================================================== --- php/php-src/trunk/ext/pdo_sqlite/tests/bug48773.phpt (rev 0) +++ php/php-src/trunk/ext/pdo_sqlite/tests/bug48773.phpt 2009-07-19 18:55:31 UTC (rev 284384) @@ -0,0 +1,34 @@ +--TEST-- +Bug #48773 (Incorrect error when setting PDO::ATTR_STATEMENT_CLASS with ctor_args) +--SKIPIF-- +<?php +if (!extension_loaded('pdo_sqlite')) print 'skip not loaded'; +?> +--FILE-- +<?php + +class bar extends PDOStatement { + private function __construct() { + } +} + +class foo extends PDO { + public $statementClass = 'bar'; + function __construct($dsn, $username, $password, $driver_options = array()) { + $driver_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; + parent::__construct($dsn, $username, $password, $driver_options); + + $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array($this->statementClass, array($this))); + } +} + +$db = new foo('sqlite::memory:', '', ''); +$stmt = $db->query('SELECT 1'); +var_dump($stmt); + +?> +--EXPECTF-- +object(bar)#%d (1) { + [%u|b%"queryString"]=> + %unicode|string%(8) "SELECT 1" +} Property changes on: php/php-src/trunk/ext/pdo_sqlite/tests/bug48773.phpt ___________________________________________________________________ Added: svn:keywords + Id Rev Revision Added: svn:eol-style + native
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php