8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-22 22:43:03 +01:00

Fix possible engine lock-up/crash when 'RELEASE SAVEPOINT xxx ONLY' syntax is used or when existing savepoint name is reused in transaction context (when old savepoint with the save name is implicitly released)

This commit is contained in:
skidder 2005-01-26 18:04:37 +00:00
parent 2d10ba73f2
commit 76a0760436

View File

@ -2131,10 +2131,10 @@ static jrd_nod* looper(thread_db* tdbb, jrd_req* request, jrd_nod* in_node)
case blr_savepoint_set:
// Release the savepoint
if (found) {
previous->sav_next = savepoint->sav_next;
Savepoint* const current = transaction->tra_save_point;
transaction->tra_save_point = savepoint;
verb_cleanup(tdbb, transaction);
previous->sav_next = transaction->tra_save_point;
transaction->tra_save_point = current;
}
@ -2145,10 +2145,10 @@ static jrd_nod* looper(thread_db* tdbb, jrd_req* request, jrd_nod* in_node)
case blr_savepoint_release_single:
{
// Release the savepoint
previous->sav_next = savepoint->sav_next;
Savepoint* const current = transaction->tra_save_point;
transaction->tra_save_point = savepoint;
verb_cleanup(tdbb, transaction);
previous->sav_next = transaction->tra_save_point;
transaction->tra_save_point = current;
break;
}