PHP 4.0 Bug #9272: odbc_close issues warning on persistent connection (includes patch)
| From: | marc at guidance dot nl | Date: | Thu, 15 Feb 2001 10:35:13 +0000 |
| Subject: | PHP 4.0 Bug #9272: odbc_close issues warning on persistent connection (includes patch) | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-46631@lists.php.net to get a copy of this message | ||
From: marc@guidance.nl
Operating system: WinNT4sp6
PHP version: 4.0.4pl1
PHP Bug Type: ODBC related
Bug description: odbc_close issues warning on persistent connection (includes patch)
If I open a persistent odbc connection and close it later I
get a warning even though the function works correctly.
The following script reproduces this:
$odbchandle = odbc_pconnect($dbname, "", "");
echo odbc_tables($odbchandle) . "<br>";
echo odbc_close($odbchandle) . "<br>";
result:
Warning: Supplied resource is not a valid ODBC-Link
resource in f:\home\dbx\html\dbx.php on line XXX
If I use odbc_connect in the same script it all works ok.
In the odbc source code I traced this to the following lines from php_odbc.c, in
PHP_FUNCTION(odbc_close):
conn = (odbc_connection *) zend_fetch_resource(pv_conn,
-1, "ODBC-Link", NULL, 1, le_conn);
if(!conn){
ZEND_FETCH_RESOURCE(conn, odbc_connection *, pv_conn,
-1, "ODBC-Link", le_pconn);
is_pconn = 1;
}
As you can see the first line will issue the warning, and if it fails it detects that it might be a
persistent connection and continues correctly.
A replacement patch for these lines might be
int found_resource_type = le_conn;
conn = (odbc_connection *) zend_fetch_resource(pv_conn,
-1, "ODBC-Link", &found_resource_type,
2, le_conn, le_pconn);
if (found_resource_type==le_pconn) {
is_pconn = 1;
}
but I don't know how to submit a patch/diff so here it is.
Cheerio, Marc.
--
Edit Bug report at: http://bugs.php.net/?id=9272&edit=1