diff options
-rw-r--r-- | NEWS | 1 | ||||
-rwxr-xr-x | ext/pdo_odbc/odbc_driver.c | 14 |
2 files changed, 12 insertions, 3 deletions
@@ -1,6 +1,7 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? 2006, PHP 5.2.0 +- Fixed bug #35552 (crash when pdo_odbc prepare fails). (Wez). 28 Apr 2006, PHP 5.1.3 - Updated bundled PCRE library to version 6.6. (Andrei) diff --git a/ext/pdo_odbc/odbc_driver.c b/ext/pdo_odbc/odbc_driver.c index 08120720be..8309b23a5a 100755 --- a/ext/pdo_odbc/odbc_driver.c +++ b/ext/pdo_odbc/odbc_driver.c @@ -198,13 +198,21 @@ static int odbc_handle_preparer(pdo_dbh_t *dbh, const char *sql, long sql_len, p efree(nsql); } + stmt->driver_data = S; + stmt->methods = &odbc_stmt_methods; + if (rc != SQL_SUCCESS) { pdo_odbc_stmt_error("SQLPrepare"); + if (rc != SQL_SUCCESS_WITH_INFO) { + /* clone error information into the db handle */ + strcpy(H->einfo.last_err_msg, S->einfo.last_err_msg); + H->einfo.file = S->einfo.file; + H->einfo.line = S->einfo.line; + H->einfo.what = S->einfo.what; + strcpy(dbh->error_code, stmt->error_code); + } } - stmt->driver_data = S; - stmt->methods = &odbc_stmt_methods; - if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { return 0; } |