| 751 | } |
| 752 | |
| 753 | void Connection::clearStatements(thread_db* tdbb) |
| 754 | { |
| 755 | Statement** stmt_ptr = m_statements.begin(); |
| 756 | while (stmt_ptr < m_statements.end()) |
| 757 | { |
| 758 | Statement* stmt = *stmt_ptr; |
| 759 | if (stmt->isActive()) |
| 760 | stmt->close(tdbb); |
| 761 | |
| 762 | // close() above could destroy statement and remove it from m_statements |
| 763 | if (stmt_ptr < m_statements.end() && *stmt_ptr == stmt) |
| 764 | { |
| 765 | Statement::deleteStatement(tdbb, stmt); |
| 766 | stmt_ptr++; |
| 767 | } |
| 768 | } |
| 769 | |
| 770 | m_statements.clear(); |
| 771 | |
| 772 | m_freeStatements = NULL; |
| 773 | m_free_stmts = m_used_stmts = 0; |
| 774 | } |
| 775 | |
| 776 | void Connection::detach(thread_db* tdbb) |
| 777 | { |