Bug #17572 Updated: Calling odbc_tables crashes

From: Date: Mon, 24 Jun 2002 20:39:47 +0000
Subject: Bug #17572 Updated: Calling odbc_tables crashes
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-11966@lists.php.net to get a copy of this message
ID: 17572 Updated by: kalowsky@php.net Reported By: jma@jma.se -Status: Open +Status: Feedback Bug Type: ODBC related Operating System: W2K, FP2 PHP Version: 4.2.1 New Comment: The crash comes from your use of odbc_free_result. If you notice you call it twice, both times trying to free the $th value. You can't really clear out the result while still trying to read it ;) Adding some simple printf debug statements shows this. Can you please try this change and report back if it works or not? Needless to say, this leads to an interesting problem which says that this shouldn't really happen (there should be some checks on this). So it looks like some sort of modifications will be needed to make checks for this. Hope to see them for 4.3, but don't hold your breath very long... I'm in the process of moving and promise nothing. The simplified version also suffers the same problem (the odbc_free_result while using it). Previous Comments: ------------------------------------------------------------------------ [2002-06-14 15:01:14] grangeway@hotmail.com A shorter version of this crash is : $ms = odbc_connect("moo", "", ""); $th = odbc_tables ($ms); while (odbc_fetch_row($th)) { odbc_free_result($th); } ------------------------------------------------------------------------ [2002-06-12 17:58:04] mwilmes@avc.edu I've tried this on two platforms W98 using Xitami, and W2K using iPlanet, but my bug is slightly different: My ODBC drivers don't load, error IM003. But those ODBC drivers worked with Access and an Oracle frontend. The W2K was a fresh install this morning with the ODBC drivers and PHP. This problem was resolved on BOTH platforms by retrograding to 4.2.0. ------------------------------------------------------------------------ [2002-06-05 05:25:55] jma@jma.se Tried the php4-win32-200206031400.zip build but the excat same thing happened :-( /JMA ------------------------------------------------------------------------ [2002-06-03 06:29:24] derick@php.net Can you please try a non-stable snapshot from snaps.php.net/win32 and report back if it works? Please do not forget to update your php4ts.dll. Derick ------------------------------------------------------------------------ [2002-06-03 06:26:13] jma@jma.se This script crashes after showing the first table. This is consistant on several ODBC sources (tried Access, Foxpro and DB2). This script worked with 4.0 versions. <?php $host = ""; // Enter your ODBC connection here $uid = ""; $pwd = ""; $ms = odbc_connect($host, $uid, $pwd); $th = odbc_tables ($ms); while (odbc_fetch_row($th)) { if (odbc_result($th, "TABLE_TYPE") == "TABLE") { $table = odbc_result($th, "TABLE_NAME"); printf("<H2>%s</H2>\n", $table); $fh = odbc_columns($ms); echo "<BLOCKQUOTE>\n"; echo "<TABLE BORDER=0 CELLPADDING=10>\n"; while (odbc_fetch_row($fh)) { if (odbc_result($fh, "TABLE_NAME") == $table) { printf("<TR>"); printf("<TD>%s</TD>", odbc_result($fh, "TYPE_NAME")); printf("<TD><B>%s</B></TD>", odbc_result($fh, "COLUMN_NAME")); switch (odbc_result($fh, "DATA_TYPE")) { default: } printf("</TR>\n"); } } echo "</TABLE>\n"; echo "</BLOCKQUOTE>\n"; odbc_free_result($th); } } odbc_free_result($th); odbc_close ($ms); ?> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=17572&edit=1

« previous php.bugs (#11966) next »