[PHP-CVS] svn: /php/php-src/ branches/PHP_5_2/ext/pdo/pdo_stmt.c branches/PHP_5_3/ext/pdo/pdo_stmt.c trunk/ext/pdo/pdo_stmt.c

2010-06-16 Thread Felipe Pena
felipe   Wed, 16 Jun 2010 23:13:29 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=300503

Log:
- Fix crash when calling a method of a class that inherits PDOStatement if 
instantiated directly

Changed paths:
U   php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c
U   php/php-src/branches/PHP_5_3/ext/pdo/pdo_stmt.c
U   php/php-src/trunk/ext/pdo/pdo_stmt.c

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-06-16 19:01:13 UTC 
(rev 300502)
+++ php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c 2010-06-16 23:13:29 UTC 
(rev 300503)
@@ -2289,6 +2289,10 @@
if (zend_hash_find(Z_OBJCE_P(object)-function_table, lc_method_name,
method_len+1, (void**)fbc) == FAILURE) {
pdo_stmt_t *stmt = 
(pdo_stmt_t*)zend_object_store_get_object(object TSRMLS_CC);
+   /* instance not created by PDO object */
+   if (!stmt-dbh) {
+   goto out;
+   }
/* not a pre-defined method, nor a user-defined method; check
 * the driver specific methods */
if (!stmt-dbh-cls_methods[PDO_DBH_DRIVER_METHOD_KIND_STMT]) {

Modified: php/php-src/branches/PHP_5_3/ext/pdo/pdo_stmt.c
===
--- php/php-src/branches/PHP_5_3/ext/pdo/pdo_stmt.c 2010-06-16 19:01:13 UTC 
(rev 300502)
+++ php/php-src/branches/PHP_5_3/ext/pdo/pdo_stmt.c 2010-06-16 23:13:29 UTC 
(rev 300503)
@@ -2282,6 +2282,10 @@
if (zend_hash_find(Z_OBJCE_P(object)-function_table, lc_method_name,
method_len+1, (void**)fbc) == FAILURE) {
pdo_stmt_t *stmt = 
(pdo_stmt_t*)zend_object_store_get_object(object TSRMLS_CC);
+   /* instance not created by PDO object */
+   if (!stmt-dbh) {
+   goto out;
+   }
/* not a pre-defined method, nor a user-defined method; check
 * the driver specific methods */
if (!stmt-dbh-cls_methods[PDO_DBH_DRIVER_METHOD_KIND_STMT]) {

Modified: php/php-src/trunk/ext/pdo/pdo_stmt.c
===
--- php/php-src/trunk/ext/pdo/pdo_stmt.c2010-06-16 19:01:13 UTC (rev 
300502)
+++ php/php-src/trunk/ext/pdo/pdo_stmt.c2010-06-16 23:13:29 UTC (rev 
300503)
@@ -2282,6 +2282,10 @@
if (zend_hash_find(Z_OBJCE_P(object)-function_table, lc_method_name,
method_len+1, (void**)fbc) == FAILURE) {
pdo_stmt_t *stmt = 
(pdo_stmt_t*)zend_object_store_get_object(object TSRMLS_CC);
+   /* instance not created by PDO object */
+   if (!stmt-dbh) {
+   goto out;
+   }
/* not a pre-defined method, nor a user-defined method; check
 * the driver specific methods */
if (!stmt-dbh-cls_methods[PDO_DBH_DRIVER_METHOD_KIND_STMT]) {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[PHP-CVS] svn: /php/php-src/branches/PHP_5_2/ext/ pdo/pdo_stmt.c pdo_sqlite/tests/bug49521.phpt

2010-03-18 Thread Felipe Pena
felipe   Thu, 18 Mar 2010 22:07:51 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=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
 }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[PHP-CVS] svn: php/php-src/branches/PHP_5_2/ext/pdo/ pdo_stmt.c

2009-07-15 Thread Felipe Pena
felipe  Thu, 16 Jul 2009 01:00:22 +

URL: http://svn.php.net/viewvc?view=revisionrevision=284164

Changed paths:
U   php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c

Log:
- MFH: Removed trailing zeros on double to string conversion (noticed on #48924)

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 2009-07-16 00:59:34 UTC 
(rev 284163)
+++ php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c 2009-07-16 01:00:22 UTC 
(rev 284164)
@@ -329,7 +329,7 @@
if (PDO_PARAM_TYPE(param-param_type) == PDO_PARAM_STR  
param-max_value_len = 0  ! ZVAL_IS_NULL(param-parameter)) {
if (Z_TYPE_P(param-parameter) == IS_DOUBLE) {
char *p;
-   int len = spprintf(p, 0, %F, 
Z_DVAL_P(param-parameter));
+   int len = spprintf(p, 0, %.*H, (int) EG(precision), 
Z_DVAL_P(param-parameter));
ZVAL_STRINGL(param-parameter, p, len, 0);
} else {
convert_to_string(param-parameter);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php