svn: /php/php-src/branches/PHP_5_2/ext/ pdo/pdo_stmt.c pdo_sqlite/tests/bug49521.phpt
| From: | Felipe Pena | Date: | Thu, 18 Mar 2010 22:07:51 +0000 |
| Subject: | svn: /php/php-src/branches/PHP_5_2/ext/ pdo/pdo_stmt.c pdo_sqlite/tests/bug49521.phpt | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-62083@lists.php.net to get a copy of this message | ||
felipe Thu, 18 Mar 2010 22:07:51 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=296361
Log:
Revert 290786: Fixed bug #49521 (PDO fetchObject sets values before calling constructor)
Bug: http://bugs.php.net/49521 (Re-Opened) PDO fetchObject
sets values before calling constructor
Changed paths:
U php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c
U php/php-src/branches/PHP_5_2/ext/pdo_sqlite/tests/bug49521.phpt
Modified: php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c
===================================================================
--- php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c 2010-03-18 21:53:50 UTC (rev 296360)
+++ php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c 2010-03-18 22:07:51 UTC (rev 296361)
@@ -1103,32 +1103,6 @@
}
}
- switch (how) {
- case PDO_FETCH_CLASS:
- if (ce->constructor && !(flags & PDO_FETCH_PROPS_LATE)) {
- stmt->fetch.cls.fci.object_pp = &return_value;
- stmt->fetch.cls.fcc.object_pp = &return_value;
- if (zend_call_function(&stmt->fetch.cls.fci, &stmt->fetch.cls.fcc TSRMLS_CC) ==
FAILURE) {
- pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "could not call class
constructor" TSRMLS_CC);
- return 0;
- } else {
- if (stmt->fetch.cls.retval_ptr) {
- zval_ptr_dtor(&stmt->fetch.cls.retval_ptr);
- }
- }
- }
- if (flags & PDO_FETCH_CLASSTYPE) {
- do_fetch_opt_finish(stmt, 0 TSRMLS_CC);
- stmt->fetch.cls.ce = old_ce;
- stmt->fetch.cls.ctor_args = old_ctor_args;
- stmt->fetch.cls.fci.param_count = old_arg_count;
- }
- break;
-
- default:
- break;
- }
-
for (idx = 0; i < stmt->column_count; i++, idx++) {
zval *val;
MAKE_STD_ZVAL(val);
@@ -1262,6 +1236,27 @@
}
switch (how) {
+ case PDO_FETCH_CLASS:
+ if (ce->constructor && !(flags & PDO_FETCH_PROPS_LATE)) {
+ stmt->fetch.cls.fci.object_pp = &return_value;
+ stmt->fetch.cls.fcc.object_pp = &return_value;
+ if (zend_call_function(&stmt->fetch.cls.fci, &stmt->fetch.cls.fcc TSRMLS_CC) ==
FAILURE) {
+ pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "could not call class
constructor" TSRMLS_CC);
+ return 0;
+ } else {
+ if (stmt->fetch.cls.retval_ptr) {
+ zval_ptr_dtor(&stmt->fetch.cls.retval_ptr);
+ }
+ }
+ }
+ if (flags & PDO_FETCH_CLASSTYPE) {
+ do_fetch_opt_finish(stmt, 0 TSRMLS_CC);
+ stmt->fetch.cls.ce = old_ce;
+ stmt->fetch.cls.ctor_args = old_ctor_args;
+ stmt->fetch.cls.fci.param_count = old_arg_count;
+ }
+ break;
+
case PDO_FETCH_FUNC:
stmt->fetch.func.fci.param_count = idx;
stmt->fetch.func.fci.retval_ptr_ptr = &retval;
Modified: php/php-src/branches/PHP_5_2/ext/pdo_sqlite/tests/bug49521.phpt
===================================================================
--- php/php-src/branches/PHP_5_2/ext/pdo_sqlite/tests/bug49521.phpt 2010-03-18 21:53:50 UTC (rev
296360)
+++ php/php-src/branches/PHP_5_2/ext/pdo_sqlite/tests/bug49521.phpt 2010-03-18 22:07:51 UTC (rev
296361)
@@ -33,7 +33,7 @@
Book::__construct
object(Book)#%d (2) {
[%u|b%"title"]=>
- string(3) "PHP"
+ string(0) ""
[%u|b%"author"]=>
string(6) "Rasmus"
}