NS_IMETHODIMP nsTransactionManager::DoTransaction(nsITransaction *aTransaction) { nsresult result; NS_ENSURE_TRUE(aTransaction, NS_ERROR_NULL_POINTER); bool doInterrupt = false; result = WillDoNotify(aTransaction, &doInterrupt); if (NS_FAILED(result)) { return result; } if (doInterrupt) { return NS_OK; } result = BeginTransaction(aTransaction); if (NS_FAILED(result)) { DidDoNotify(aTransaction, result); return result; } result = EndTransaction(); nsresult result2 = DidDoNotify(aTransaction, result); if (NS_SUCCEEDED(result)) result = result2; return result; }
NS_IMETHODIMP nsTransactionManager::DoTransaction(nsITransaction *aTransaction) { nsresult result; if (!aTransaction) return NS_ERROR_NULL_POINTER; LOCK_TX_MANAGER(this); PRBool doInterrupt = PR_FALSE; result = WillDoNotify(aTransaction, &doInterrupt); if (NS_FAILED(result)) { UNLOCK_TX_MANAGER(this); return result; } if (doInterrupt) { UNLOCK_TX_MANAGER(this); return NS_OK; } result = BeginTransaction(aTransaction); if (NS_FAILED(result)) { DidDoNotify(aTransaction, result); UNLOCK_TX_MANAGER(this); return result; } result = EndTransaction(); nsresult result2 = DidDoNotify(aTransaction, result); if (NS_SUCCEEDED(result)) result = result2; UNLOCK_TX_MANAGER(this); return result; }