svn: php/php-src/ branches/PHP_5_2/ext/pdo_sqlite/tests/bug48773.phpt branches/PHP_5_3/ext/pdo_sqlite/tests/bug48773.phpt trunk/ext/pdo/pdo_dbh.c
trunk/ext/pdo_sqlite/tests/bug48773.phpt
| From: | Felipe Pena | Date: | Sun, 19 Jul 2009 18:55:31 +0000 |
| Subject: | svn: php/php-src/ branches/PHP_5_2/ext/pdo_sqlite/tests/bug48773.phpt branches/PHP_5_3/ext/pdo_sqlite/tests/bug48773.phpt trunk/ext/pdo/pdo_dbh.c trunk/ext/pdo_sqlite/tests/bug48773.phpt |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-59626@lists.php.net to get a copy of this message | ||
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