diff --git a/IscDbc/IscResultSet.cpp b/IscDbc/IscResultSet.cpp index 42d6a650..e344e223 100644 --- a/IscDbc/IscResultSet.cpp +++ b/IscDbc/IscResultSet.cpp @@ -247,11 +247,11 @@ void IscResultSet::close() reset(); if (statement) - { + { statement->deleteResultSet (this); statement->release(); statement = NULL; - } + } } void IscResultSet::deleteBlobs() diff --git a/IscDbc/IscStatement.cpp b/IscDbc/IscStatement.cpp index 9573b678..383e8aed 100644 --- a/IscDbc/IscStatement.cpp +++ b/IscDbc/IscStatement.cpp @@ -549,14 +549,6 @@ void IscStatement::deleteResultSet(IscResultSet * resultSet) if ( connection ) { - if ( transactionLocal ) - { - if ( transactionInfo.autoCommit ) - commitLocal(); - } - else if ( connection->transactionInfo.autoCommit ) - connection->commitAuto(); - if ( isActiveCursor ) { // Close cursors too. @@ -565,7 +557,15 @@ void IscStatement::deleteResultSet(IscResultSet * resultSet) // Cursor already closed or not assigned if ( statusVector[1] && statusVector[1] != 335544569) THROW_ISC_EXCEPTION (connection, statusVector); + } + + if ( transactionLocal ) + { + if ( transactionInfo.autoCommit ) + commitLocal(); } + else if ( connection->transactionInfo.autoCommit ) + connection->commitAuto(); } } }