@@ -1461,8 +1461,8 @@ void GeoscapeState::time1Hour()
14611461 {
14621462 if (j->second > PROGRESS_NOT_COMPLETE )
14631463 {
1464- (*i)->removeProduction (j->first );
14651464 popup (new ProductionCompleteState ((*i), tr (j->first ->getRules ()->getName ()), this , j->second ));
1465+ (*i)->removeProduction (j->first );
14661466 }
14671467 }
14681468
@@ -1565,19 +1565,22 @@ void GeoscapeState::time1Day()
15651565 _game->getSavedGame ()->getAvailableResearchProjects (before, _game->getMod (), *i);
15661566 }
15671567 // 3. add finished research, including lookups and getonefrees (up to 4x)
1568- for (std::vector<ResearchProject*>::const_iterator iter = finished.begin (); iter != finished.end (); ++iter)
1568+ for (std::vector<ResearchProject*>::iterator iter = finished.begin (); iter != finished.end (); ++iter)
15691569 {
1570+ const RuleResearch *bonus = 0 ;
1571+ const RuleResearch *research = (*iter)->getRules ();
1572+
15701573 // 3a. remove finished research from the base where it was researched
15711574 (*i)->removeResearch (*iter);
1572- // 3b. handle interrogations
1573- RuleResearch * bonus = 0 ;
1574- const RuleResearch * research = (*iter)-> getRules ();
1575+ (*iter) = 0 ;
1576+
1577+ // 3b. handle interrogation
15751578 if (Options::retainCorpses && research->destroyItem () && _game->getMod ()->getUnit (research->getName ()))
15761579 {
15771580 (*i)->getStorageItems ()->addItem (_game->getMod ()->getArmor (_game->getMod ()->getUnit (research->getName ())->getArmor (), true )->getCorpseGeoscape ());
15781581 }
15791582 // 3c. handle getonefrees (topic+lookup)
1580- if (!(*iter)-> getRules () ->getGetOneFree ().empty ())
1583+ if (!research ->getGetOneFree ().empty ())
15811584 {
15821585 std::vector<std::string> possibilities;
15831586 for (std::vector<std::string>::const_iterator f = research->getGetOneFree ().begin (); f != research->getGetOneFree ().end (); ++f)
@@ -1681,8 +1684,6 @@ void GeoscapeState::time1Day()
16811684 }
16821685 }
16831686 }
1684- // 3k. remove processed item from the list (and continue with the next item)
1685- delete (*iter);
16861687 }
16871688
16881689 // Handle soldier wounds
0 commit comments