summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWez Furlong <wez@php.net>2006-04-30 00:52:28 +0000
committerWez Furlong <wez@php.net>2006-04-30 00:52:28 +0000
commitaa5dbc8c9263b53b646980998e1d2eea03323f37 (patch)
tree63df523987e803967eb862002e2be848b12b8280
parentfa94d911dfefc77bbb174200001d58b297a10707 (diff)
downloadphp-git-aa5dbc8c9263b53b646980998e1d2eea03323f37.tar.gz
Fix #35552
-rw-r--r--NEWS1
-rwxr-xr-xext/pdo_odbc/odbc_driver.c14
2 files changed, 12 insertions, 3 deletions
diff --git a/NEWS b/NEWS
index 60154813c7..353e1d5985 100644
--- a/NEWS
+++ b/NEWS
@@ -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;
}