@@ -264,14 +264,15 @@ getItemIdentifier(ItemPtr item)
264
264
265
265
/* *
266
266
* Resolve the difference between RPMs in the first and second transaction item
267
- * and create a ItemPair of Upgrade, Downgrade or drop the item from the merged
268
- * transaction set in case of both packages are of the same version .
269
- * Method is called when original package is being removed and than installed again.
267
+ * and create a ItemPair of Upgrade, Downgrade or remove the item from the merged
268
+ * transaction set in case of both packages are the same.
269
+ * Method is called when original package is being removed and then installed again.
270
270
* \param itemPairMap merged transaction set
271
271
* \param previousItemPair original item pair
272
272
* \param mTransItem new transaction item
273
+ * \return true if the original and new transaction item differ
273
274
*/
274
- void
275
+ bool
275
276
MergedTransaction::resolveRPMDifference (ItemPairMap &itemPairMap,
276
277
ItemPair &previousItemPair,
277
278
TransactionItemBasePtr mTransItem )
@@ -287,7 +288,7 @@ MergedTransaction::resolveRPMDifference(ItemPairMap &itemPairMap,
287
288
firstRPM->getRelease () == secondRPM->getRelease ()) {
288
289
// Drop the item from merged transaction
289
290
itemPairMap.erase (getItemIdentifier (firstItem));
290
- return ;
291
+ return false ;
291
292
} else if ((*firstRPM) < (*secondRPM)) {
292
293
// Upgrade to secondRPM
293
294
previousItemPair.first ->setAction (TransactionItemAction::UPGRADED);
@@ -298,6 +299,7 @@ MergedTransaction::resolveRPMDifference(ItemPairMap &itemPairMap,
298
299
mTransItem ->setAction (TransactionItemAction::DOWNGRADE);
299
300
}
300
301
previousItemPair.second = mTransItem ;
302
+ return true ;
301
303
}
302
304
303
305
void
@@ -308,12 +310,14 @@ MergedTransaction::resolveErase(ItemPairMap &itemPairMap,
308
310
/*
309
311
* The original item has been removed - it has to be installed now unless the rpmdb
310
312
* has changed. Resolve the difference between packages and mark it as Upgrade,
311
- * Reinstall or Downgrade
313
+ * Downgrade or remove it from the transaction
312
314
*/
313
315
if (mTransItem ->getAction () == TransactionItemAction::INSTALL) {
314
316
if (mTransItem ->getItem ()->getItemType () == ItemType::RPM) {
315
317
// resolve the difference between RPM packages
316
- resolveRPMDifference (itemPairMap, previousItemPair, mTransItem );
318
+ if (!resolveRPMDifference (itemPairMap, previousItemPair, mTransItem )) {
319
+ return ;
320
+ }
317
321
} else {
318
322
// difference between comps can't be resolved
319
323
mTransItem ->setAction (TransactionItemAction::REINSTALL);
0 commit comments