zak Wed Oct 9 08:33:41 2002 EDT Modified files: /php4/ext/mysql php_mysql.c Log: Possible fix for bug #19529 (thanks Rasmus, Arjen and Monty) Major changes to _restore_connection_defaults - added code block to finds and releases the active mysql result (if any) - this should prevent the 'Commands out of sync' error that would be raised when a query is made when unfreed results exist Minor changes to _restore_connection_defaults - replaced calls to mysql_real_query with mysql_query - we probably should not be using mysql_real_query without checking to see if we have a version that supports the function. - given that we control the query strings here and do not need to worry about binary safety, I am using mysql_query instead - see the bug report for further discussion Index: php4/ext/mysql/php_mysql.c diff -u php4/ext/mysql/php_mysql.c:1.164 php4/ext/mysql/php_mysql.c:1.165 --- php4/ext/mysql/php_mysql.c:1.164 Wed Oct 9 03:34:48 2002 +++ php4/ext/mysql/php_mysql.c Wed Oct 9 08:33:40 2002 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_mysql.c,v 1.164 2002/10/09 07:34:48 zak Exp $ */ +/* $Id: php_mysql.c,v 1.165 2002/10/09 12:33:40 zak Exp $ */ /* TODO: * @@ -229,7 +229,7 @@ static int _restore_connection_defaults(zend_rsrc_list_entry *rsrc TSRMLS_DC) { php_mysql_conn *link; - char query[128]; + char query[17]; /* Increase size if query length increases */ char user[128]; char passwd[128]; @@ -239,13 +239,27 @@ link = (php_mysql_conn *) rsrc->ptr; + /* Find the active result set and free it */ + if (link->active_result_id) { + int type; + MYSQL_RES *mysql_result; + + mysql_result = (MYSQL_RES *) zend_list_find(link->active_result_id, +&type); + if (mysql_result && type==le_result) { + zend_list_delete(link->active_result_id); + link->active_result_id = 0; + } + } + /* rollback possible transactions */ strcpy (query, "ROLLBACK"); - mysql_real_query(&link->conn, query, strlen(query)); + /* Binary safe query not required here */ + mysql_query(&link->conn, query); /* restore session variable "autocommit" to default (=1) */ strcpy (query, "SET AUTOCOMMIT=1"); - mysql_real_query(&link->conn, query, strlen(query)); + /* Binary safe query not required here */ + mysql_query(&link->conn, query); /* unset the current selected db */ #if MYSQL_VERSION_ID > 32329
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php