iliaa Tue Jan 31 17:20:33 2006 UTC Modified files: (Branch: PHP_5_1) /php-src/ext/pdo pdo_dbh.c /php-src NEWS Log: Fixed bug #36222 (errorInfo in PDOException is always NULL). http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo/pdo_dbh.c?r1=1.82.2.26&r2=1.82.2.27&diff_format=u Index: php-src/ext/pdo/pdo_dbh.c diff -u php-src/ext/pdo/pdo_dbh.c:1.82.2.26 php-src/ext/pdo/pdo_dbh.c:1.82.2.27 --- php-src/ext/pdo/pdo_dbh.c:1.82.2.26 Sun Jan 1 12:50:11 2006 +++ php-src/ext/pdo/pdo_dbh.c Tue Jan 31 17:20:32 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_dbh.c,v 1.82.2.26 2006/01/01 12:50:11 sniper Exp $ */ +/* $Id: pdo_dbh.c,v 1.82.2.27 2006/01/31 17:20:32 iliaa Exp $ */ /* The PDO Database Handle Class */ @@ -41,7 +41,7 @@ pdo_error_type *pdo_err = &dbh->error_code; char *message = NULL; const char *msg; - zval *info = NULL; + if (dbh->error_mode == PDO_ERRMODE_SILENT) { #if 0 @@ -64,12 +64,6 @@ msg = "<<Unknown error>>"; } - MAKE_STD_ZVAL(info); - array_init(info); - - add_next_index_string(info, *pdo_err, 1); - add_next_index_long(info, 0); - if (supp) { spprintf(&message, 0, "SQLSTATE[%s]: %s: %s", *pdo_err, msg, supp); } else { @@ -78,12 +72,8 @@ if (dbh->error_mode != PDO_ERRMODE_EXCEPTION) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", message); - - if (info) { - zval_ptr_dtor(&info); - } } else { - zval *ex; + zval *ex, *info; zend_class_entry *def_ex = php_pdo_get_exception_base(1 TSRMLS_CC), *pdo_ex = php_pdo_get_exception(); MAKE_STD_ZVAL(ex); @@ -92,10 +82,14 @@ zend_update_property_string(def_ex, ex, "message", sizeof("message")-1, message TSRMLS_CC); zend_update_property_string(def_ex, ex, "code", sizeof("code")-1, *pdo_err TSRMLS_CC); - if (info) { - zend_update_property(pdo_ex, ex, "errorInfo", sizeof("errorInfo")-1, info TSRMLS_CC); - zval_ptr_dtor(&info); - } + MAKE_STD_ZVAL(info); + array_init(info); + + add_next_index_string(info, *pdo_err, 1); + add_next_index_long(info, 0); + + zend_update_property(pdo_ex, ex, "errorInfo", sizeof("errorInfo")-1, info TSRMLS_CC); + zval_ptr_dtor(&info); zend_throw_exception_object(ex TSRMLS_CC); } @@ -129,7 +123,6 @@ } if (dbh->methods->fetch_err) { - MAKE_STD_ZVAL(info); array_init(info); @@ -146,9 +139,6 @@ supp = estrndup(Z_STRVAL_PP(item), Z_STRLEN_PP(item)); } } - - zval_ptr_dtor(&info); - info = NULL; } if (supp) { @@ -159,10 +149,6 @@ if (dbh->error_mode == PDO_ERRMODE_WARNING) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", message); - - if (info) { - zval_ptr_dtor(&info); - } } else if (EG(exception) == NULL) { zval *ex; zend_class_entry *def_ex = php_pdo_get_exception_base(1 TSRMLS_CC), *pdo_ex = php_pdo_get_exception(); @@ -175,12 +161,15 @@ if (info) { zend_update_property(pdo_ex, ex, "errorInfo", sizeof("errorInfo")-1, info TSRMLS_CC); - zval_ptr_dtor(&info); } zend_throw_exception_object(ex TSRMLS_CC); } - + + if (info) { + zval_ptr_dtor(&info); + } + if (message) { efree(message); } http://cvs.php.net/viewcvs.cgi/php-src/NEWS?r1=1.2027.2.385&r2=1.2027.2.386&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.385 php-src/NEWS:1.2027.2.386 --- php-src/NEWS:1.2027.2.385 Tue Jan 31 08:11:35 2006 +++ php-src/NEWS Tue Jan 31 17:20:32 2006 @@ -18,6 +18,7 @@ - Added imap_savebody(). (Mike) - Fixed imagecolorallocate() and imagecolorallocatelapha() to return FALSE on error. (Pierre) +- Fixed bug #36222 (errorInfo in PDOException is always NULL). (Ilia) - Fixed bug #36185 (str_rot13(NULL) crash). (Pierre) - Fixed bug #36176 (PDO_PGSQL - PDO::exec() does not return number of rows affected by the operation). (Ilia)
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php