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